查找R数据框中是否存在列,如果不存在则创建它

时间:2018-01-11 11:57:11

标签: r

我在R

中有以下数据框
 no     qc6    qc5    qc3     itv6   itv5    itv3
123      12    12     14      8      9       9

现在,我想检查数据框中是否存在以下列,如果没有,则创建一个值为0的新列。

 qc1,qc2,itv1,itv2

我可以在R

中使用if循环
 if(!"qc1" %in% colnames(df))
 {
   df$qc1 <- 0
 }

但是,我必须为每个要创建的变量编写循环。有没有更快的方法呢?

1 个答案:

答案 0 :(得分:7)

如果您有一个知道名称的向量,则以下内容将检查它们是否已有列。如果没有,他们将创建一个值为0的。

x <- c( "qc1","qc2","itv1","itv2", "no" )
d <- data.frame( no = 123,    qc6 = 12,    qc5 = 12,    qc3 = 14,     itv6 = 8,   itv5 = 9,    itv3 = 9)

d[x[!(x %in% colnames(d))]] = 0
d

这给出了输出:

 no     qc6    qc5    qc3     itv6   itv5    itv3    qc1    qc2    itv1    itv2
123      12    12     14      8      9       9       0      0      0       0