0

複数のファイル read.table をインポートし、それぞれに file1、file2、file3 などの名前を付けました... すべての data.frames (read.table ファイル) をリストに入れました。

ClassFilter <- function(x) inherits(get(x), 'data.frame' )
Objs <- Filter( ClassFilter, ls() )

ここで、各 data.frame (例: file1) を呼び出して、列の平均を実行します。

for(x in 1:NumberOfFiles){
  mean[NumberOfFiles:400] <- apply(Objs[[x]],2,mean)
}

問題は、リスト内の要素が指していないため、Objs[[x]] が「適用エラー (Objs[[x]], 2, mean) : dim(X) には正の長さが必要です」というエラーが表示されることです。 data.frame に。リスト要素が最初にリストが作成されたdata.frameを指すようにする方法を知っている人はいますか? ありがとうございました

4

1 に答える 1

2

Objs変数の名前が含まれているため、最初に関数data.frameを使用して変数を取得する必要があります。get()

for(x in 1:NumberOfFiles){
  Mean[NumberOfFiles:400] <- apply(get(Objs[x]),2,mean)
}

または、必要に応じて、変数名を「評価」することもできます。

for(x in 1:NumberOfFiles){
  Mean[NumberOfFiles:400] <- apply(eval(as.name(Objs[x])),2,mean)
}

meanまた、@SeñorOによって正しく指摘されているように、関数meanとの競合を避けるために、オブジェクトに別の名前を付ける必要があります。

于 2012-12-12T18:17:01.563 に答える