【发布时间】:2021-12-11 07:50:51
【问题描述】:
我有一个包含“潜在”列名的向量:
col_vector <- c("A", "B", "C")
我也有一个数据框,例如
library(tidyverse)
df <- tibble(A = 1:2,
B = 1:2)
我现在的目标是创建 col_vector 中提到的所有在 df 中尚不存在的列。
对于上面的例子,我的代码如下:
df %>%
mutate(!!sym(setdiff(col_vector, colnames(.))) := NA)
# A tibble: 2 x 3
A B C
<int> <int> <lgl>
1 1 1 NA
2 2 2 NA
问题是,一旦 a) 来自 col_vector 的多列丢失或 b) 没有来自 col_vector 的列,此代码就会失败。我考虑过某种 if_else,但不知道如何以这种方式使列创建有条件 - 最好以整洁的方式。我知道我可以创建一个遍历所有缺失列的循环,但我想知道是否有更直接的方法。
上述代码失败的示例数据:
df2 <- tibble(A = 1:2)
df3 <- tibble(A = 1:2,
B = 1:2,
C = 1:2)
【问题讨论】:
-
天哪。愚蠢的我。感谢您的参考。