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)
}

此外,正如@SeñorO 正确指出的那样,您应该为mean对象指定一个不同的名称,以避免与函数均值发生冲突。

于 2012-12-12T18:17:01.563 回答