在不同长度的dataframe列中查找向量的元素

时间:2015-01-21 08:45:29

标签: r

我想检查vector的元素是否是dataframe列的元素。然后在df中添加一列,找到或不发现的标志(此处:0或1)

df<- (rbind(1,2,3,4,5,6))
names(df)[names(df)=="V1"] <- "Element_Id"
elements.to.search<-c(2,4)

# Pseudo-Code
for (i in 1:rowofdf)
    if elementof(elements.to.search) in df
        df[i,2]=1
    else
        df[i,2]=0
##########

names(df)[names(df)=="V2"] <- "Flag"

2 个答案:

答案 0 :(得分:0)

那么,

我在这里发布了几个小时的解决方案。写完后,有一丝洞察力......它的确有效!

所以在这里分享我的解决方案:

rows<-dim(df)[1]

for(j in 1:rows){  
  elements.to.search<-c(2,4)
  if(((is.element(df[j,1],elements.to.search))))
  {
    df[j,2] <- 0
  }
}

但我总是对不同的方法感到好奇。所以请随意提出不同的解决方案。

答案 1 :(得分:0)

您可以使用data.table。 (顺便说一句,示例dfmatrix

library(data.table)
setDT(list(df))[, Flag:=(V1 %in% c(2,4))+0L][]
#  V1 Flag
#1:  1    0
#2:  2    1
#3:  3    0
#4:  4    1
#5:  5    0
#6:  6    0