我有一个向量,该向量包含表示应该在最终df中的变量名称的字符串。这些名称可能会根据其他条件每次更改。
x <- colnames(df)
y <- c("blue", "yellow", "red")
z <- setdiff(y,x)
让我们说我现在的结果是:z = c("blue", "red")
我想要一个函数,if
的向量y的任何元素从z中丢失,THEN
,该函数将在df
上创建一列,其元素为变量名。 / p>
这是我不确定的尝试:
if (length(z) > 0) {
for (i in z) {
df$i <- NA
}
}
我不知道该怎么做的部分是传递i
作为在df
上创建新变量的参数。
在我的示例中:我最终应该将df$yellow
作为df
的新变量。
我检查了很多帖子,或者我不了解它是如何工作的,或者他们没有按照我的需要做事,有的仅供参考:
答案 0 :(得分:1)
这是没有任何循环的一种可能性:
df <- data.frame(x = 1:5)
z <- c("blue", "red")
df[z] <- NA_character_
x blue red
1 1 NA NA
2 2 NA NA
3 3 NA NA
4 4 NA NA
5 5 NA NA
答案 1 :(得分:0)
解决方案的确是@akrun的简单建议:
您可以使用[代替$,即df [z] <-NA可复制的mtcars [z] <-NA;头(mtcars)
因此,如下:
if (length(z) > 0) {
for (i in z) {
df[i] <- NA
}
}