2014-04-15 164 views
0

這是我的問題。我有兩個數據框,df1和df2。我想添加一個名爲issp的列到df1中,作爲df2中名爲sp的列的值的函數。 df1和df2有一個共同名爲loc的列,但它在df2中重複了很多(df2中的〜90k行,對df1中的5k行)。從一個數據幀傳輸信息到另一個

的想法是,以確定其DF1通過向列ISSP值1

這裏包含的種類SP的位置是腳本使用:

for (i in (1:length(df2$loc)) { 
    if (df2[i, "sp"]==1) { 
     df1(which[df1$loc==df2[i, "loc"]],)$issp = 1 
    } 
} 

它不工作和R將我帶回了以下錯誤:

Error in `*tmp*`[df1[, "loc"] == df2[i, "loc"]] : 
    object of type 'closure' is not subsettable` 
+0

你'DF1(這...)'是錯誤的。你使用了'('而不是'['。它必須是'df1 [which ...]'。 – sgibb

+0

確實...對不起,並且非常感謝。 – user3443183

回答

0

你有一個語法錯誤:

df1(which[df1$loc==df2[i, "loc"]],)$issp = 1 

應該

df1[which(df1$loc==df2[i, "loc"]),]$issp = 1 
+0

...確實,對於無用的問題抱歉。非常感謝你。 – user3443183

1

一個更好的辦法來做到這一點

#Get indices of sp in df2 that are 1 
df2.sp.idx <-which(df2$sp ==1) 
df1$issp <-NA 
df1$issp[which(df1$loc %in% df2$loc[df2.sp.idx])] <-1