这是我的问题。我有两个数据帧,df1和df2。我想在df1中添加一个名为issp
的列,该列是由df2中的sp
列获取的值的函数。df1和df2共有一个名为loc
的列,但它在df2中重复了很多(df2中~90k行,df1中5k行)。
其思想是通过给列issp值1来识别df1中包含特定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`
实现的更好方法
#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
您有一个语法错误:
df1(which[df1$loc==df2[i, "loc"]],)$issp = 1
应该是
df1[which(df1$loc==df2[i, "loc"]),]$issp = 1