我有一个向量和一个数据集,它们类似于:
id_vector <- as.character(c("n01", "n02", "n03"))
df_1 <- data.frame("id" = c("n01", "n02", "n02", "n03"), "n01" = NA, "n02" = NA, "n03" = NA)
df_1$id <- as.character(df_1$id)
我希望数据集为:
df_2 <- data.frame("id" = c("n01", "n02", "n02", "n03"), "n01" = c(1, NA, NA, NA), "n02" = c(NA, 1, 1, NA), "n03" = c(NA, NA, NA, 1))
解决方案应该很简单,例如:
for (i in id_vector){
df_1[i][df_1$id == i] <- 1
}
但是,我不能使用两个[]。错误是:
Error in `[<-.data.frame`(`*tmp*`, df_1$id == i, value = 1) :
duplicate subscripts for columns
有什么帮助吗?
谢谢!
在这里,我们可以使用子集向量[[
。df_1[1]
仍然是data.frame
一列
for (i in id_vector){
df_1[[i]][df_1$id == i] <- 1
}
identical(df_1, df_2)
#[1] TRUE
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句