2017-06-02 13 views
1

複数のデータフレームのプロットをプログラムで作成し、それぞれにデータフレームの名前に基づいて固有の名前を付けようとしています。データフレームはRにインポートされ、ネームリストに名前が与えられました。各データフレームには2つの列があります。私の目標は、第2列の値のランクを生成し、ランクに対して値をプロットすることです。R:ベクトルに格納された複数のデータフレームのプロットを作成する

library(ggplot2) 
library(tibble) 

# List of data frame names 
namelist<- c("ara5", "brach5", "homo5", "hord5", "ory5", "sor5", "trit5", 
"zea5") 

## Define function 
makePlot<- function(DF){ 
    sortindex<- order(DF[,2]) 
    rnk<-rank(DF[,2]) 
    temp<-as.tibble(cbind(rnk, DF[,2])) 
    colnames(temp)<-c("rank", "count") 
    p<- qplot(temp$rank, temp$count, xlab="rank", ylab="count", main=DF) 
    file<-paste(DF, ".png", sep="") 
    ggsave(file, plot=p, device="png") 
} 

## call function 
sapply(namelist, makePlot) 

私は上記のコードを実行すると、私は、次のエラーが表示さ:DFで エラー[2]:次元の数が正しくありません

私はからデータを取得しようとしているデータフレームいることが確認されています正しい次元数を持っているので、このコードがデータフレームのリストをどのように反復しているかに問題があると思います。

これを修正するにはどうすればよいですか?

+1

はどうなりますか?データフレームオブジェクトの名前は、一般的に引用符で囲まれていません。 –

+0

引用符または試行リスト(ara5、...など)を削除すると、両方ともエラーが発生します。 – cjfiscus

+0

エラーは何ですか?それ以外の何かが間違っているかもしれません。 –

答えて

0

これを解決する1つの方法は、getを使用して、関数に渡される文字列で指定された変数を取得することです。あなたが名前をオフに引用符を取る場合

すなわち:

makePlot<- function(DF){ 
    DF <- get(DF) 
    ... 
+0

動作しませんでした。 grDevices :: dev.off()のエラー: QuartzBitmap_Output - ファイル 'cを開くことができません(624、15、599、305、597、 – cjfiscus

関連する問題