使用循环和条件

时间:2017-01-30 09:27:00

标签: r loops if-statement grep

我有一个像这样的数据框

    v1  v2
1   a   b,c
2   b   d,a
3   c   c,a

我想检查每行包含一个特定值的值,并使用循环和if else条件将其替换为另一个值。例如,在第二列的第一行中,意味着“b,c”不包含“a”第一列第一行的值,因此我们必须取“b,c”并将其替换为“a”在列v2中包含“a”的行中。因此,自第二个&第二列的第三行将在第一列中包含它们的值,因此我们必须跳过它们。最终结果将是

    v1  v2
2   b   d,b,c
3   c   c,b,c

我写过这篇文章,但我无法达到我想要的最终结果:

df<-data.frame(v1=c("a","b","c"),v2=c("b,c","d,a","c,a"),stringsAsFactors=F)
df$v1 <- as.character(df$v1)
df$v2 <- as.character(df$v2)
df2<-data.frame()
for(i in 1:nrow(df)){
    if(length(grep(df[i,1], df[i,2]))==0){
      res<-sub(df[i,1],df[i,2], df[,2])
      df2<-data.frame(x=df[,1],y=res, row.names=NULL)
    }
    else(grep(df[i,1], df[i,2])!=0)
    next

    print(df2)
  }

0 个答案:

没有答案