【问题标题】:Add columns in vector but not in df在向量中添加列,但不在 df 中
【发布时间】:2015-09-30 18:13:19
【问题描述】:

我正在尝试执行以下操作,并且想知道是否有更简单的方法来使用 dplyr 来实现这一点(我确定有):

我想将数据框的列与名称向量进行比较,如果 df 不包含与名称向量中的一个名称相对应的列,则将该列添加到 df 并用 NA 填充其值.

例如,在下面的 MWE 中:

df <- data.frame(cbind(c(1:6),c(11:16),c(10:15)))
colnames(df) <- c("A","B","C")
names <- c("A","B","C","D","E")

如何使用 dplyr 创建两列 D 和 E(在名称中,但不在 df 中)并使用 NA 填充它?

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    dplyr 中不需要,它只是基本 R 中的一个基本操作。(顺便说一句,以后尽量避免覆盖 names 等内置函数。names 仍然有效的原因是因为 R 在base package NAMESPACE 文件,而不是在全局环境中,但这仍然是一个不好的做法。)

    df[setdiff(names, names(df))] <- NA
    df
    #   A  B  C  D  E
    # 1 1 11 10 NA NA
    # 2 2 12 11 NA NA
    # 3 3 13 12 NA NA
    # 4 4 14 13 NA NA
    # 5 5 15 14 NA NA
    # 6 6 16 15 NA NA
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-21
      • 1970-01-01
      • 2018-10-07
      • 1970-01-01
      • 2015-09-02
      • 2021-05-20
      相关资源
      最近更新 更多