我导入了多个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。任何人都知道我如何使list元素指向最初创建列表的data.frame?谢谢
答案 0 :(得分:1)
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
对象指定一个不同的名称,以避免与函数均值冲突。