R 在多个数据帧中搜索相同的项

R 在多个数据帧中搜索相同的项,r,search,loops,dataframe,R,Search,Loops,Dataframe,我有一个data.frames列表[或者更准确地说,是指向它们的对象]。 其思想是在所有数据帧中搜索相同的项并提取行 search.list=c("f.201301","f.201302","f.201303") # data frames list column='Actor1Code' item='MNC' # this works: test1=f.201301[f.201301[,column]==item] test2=f.201302[f.201302[,column]==item

我有一个data.frames列表[或者更准确地说,是指向它们的对象]。 其思想是在所有数据帧中搜索相同的项并提取行

search.list=c("f.201301","f.201302","f.201303") # data frames list
column='Actor1Code'
item='MNC'

# this works:
test1=f.201301[f.201301[,column]==item]
test2=f.201302[f.201302[,column]==item]
test3=f.201303[f.201303[,column]==item]
test=rbind(test1,test2,test3)

# but this doesn't:

for (i in 1:length(search.list)) {
  search.list[i][search.list[i][,column]==item]
}

Error in search.list[i][, column] : incorrect number of dimensions
使用以下命令:

result <- list()

for (i in 1:length(search.list))
{
  x <- get(search.list[i])
  result[[i]] <- x[x[,column]==item]
}

do.call(rbind, result)

结果可能作为@Ferdinands答案之外的简短解释:
搜索.list[i]
是类型为
字符的对象,而不是您要查找的
数据.frame
。因此,在此
字符上调用
“[”
必须失败。
get(search.list[i])
在当前环境中搜索变量名为
search.list[i]
的对象,并返回ist。作为附加提示:您应该使用
seq\u-alow(search.list)
而不是
1:length(search.list)
因为这是相当安全的。或者您使用
for(search.list中的search.item){x