2013-06-24 30 views
0

我有一個data.frames列表[或者更準確地說,指向它們的laf對象]。 這個想法是在所有數據框中搜索相同的術語並提取行。在多個數據框中搜索相同的術語

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 
+0

也許作爲簡短說明:'search.list [I]'是類型的對象'character'而不是'data.frame '你在找。因此,在這個「字符」上調用''[''必須失敗。 'get(search.list [i])'在當前環境中搜索變量名爲search.list [i]的對象並返回ist。作爲附加提示:您應該使用'seq_along(search.list)'而不是'1:length(search.list)',因爲這是非常安全的。或者你使用'for(search.item中的search.item){x < - get(search.item);直接。 – Beasterfield

回答

1

使用此:

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答案
+0

謝謝!這工作。 :-) – Henk