data_start <- data.frame(marker = c("yes","yes","no","yes","no"),
id_out = c(5,3,1,1,7),
id_new = c(6,8,9,4,2))
> data_start
marker id_out id_new
1 yes 5 6
2 yes 3 8
3 no 1 9
4 yes 1 4
5 no 7 2
下方空列添加三个列标题。附加开始var1:var3
值。
data_start[,c("var1", "var2", "var3")] <- NA
vars <- c(5,3,1)
data_start[1, 4:6] <- vars
> data_start
marker id_out id_new var1 var2 var3
1 yes 5 6 5 3 1
2 yes 3 8 NA NA NA
3 no 1 9 NA NA NA
4 yes 1 4 NA NA NA
5 no 7 2 NA NA NA
我想通过应用功能,每行,其中IF = yes
和id_out
匹配任何var1:var3
的更新我var1:var3
列,id_new
更换任何的var1:var3
。我找到了这个解决方案,但是适用于一行代码,并且仍然需要更新该行的每个新的var1:var3
部分。
data_start[1, 4:6][data_start[1, 4:6] == data_start[1,"id_out"]] <- data_start[1,"id_new"]
每行还取决于在再次应用函数之前使用上述行中的值。
当标记= no
并且随后更新每行时,最终输出将如下所示,其中行保持不变。
> data_final
marker id_out id_new var1 var2 var3
1 yes 5 6 6 3 1
2 yes 3 8 6 8 1
3 no 1 9 6 8 1
4 yes 1 4 6 8 4
5 no 7 2 6 8 4
谢谢,终于回来了,它的工作原理如预期。 – panstotts