如何向 DataFrame 添加多个新列并使用 R 中的单个值进行初始化

How to Add Multiple New Columns to a Dataframe and Initialize with a Single Value in R

提问人:Brandon 提问时间:10/31/2023 最后编辑:MrFlickBrandon 更新时间:10/31/2023 访问量:30

问:

我需要一种优雅的方式来创建多个新列并将它们添加到 R 中的现有数据帧中。我还想用一个值初始化这些新列的所有行,在我的例子中是 NA,以便我以后可以覆盖它们。

R DataFrame 多列 变量赋值

评论

0赞 thelatemail 10/31/2023
之前的相关讨论 - 如何一次性向 data.frame 添加多个列?,包括对边缘情况的讨论,例如向 0 行添加列。data.frame

答:

0赞 Brandon 10/31/2023 #1

我发现最干净的方法是:

  1. 创建要添加到现有 DataFrame 的新列名列表。
    newColumns <- c("Var1", "Var2")
  2. 如果要将此代码用于自动化,则可能需要确定哪些列尚未在数据帧中的功能,以便仅向数据集添加必要的新变量。为此,请查找当前不在数据框中的变量名称的索引。
    missingColumns <- which(!(newColumns %in% names(dataFrame)))
  3. 引用、写入新变量并将其初始化到 DataFrame。
    dataFrame[newColumns[missingColumns]] <- NA
0赞 dufei 10/31/2023 #2

Tidyverse 解决方案可以使用:tibble::add_column()

library(tibble)

df <- tibble(
  x = 1:10
)

df |> add_column(y = NA, z = NA)
#> # A tibble: 10 × 3
#>        x y     z    
#>    <int> <lgl> <lgl>
#>  1     1 NA    NA   
#>  2     2 NA    NA   
#>  3     3 NA    NA   
#>  4     4 NA    NA   
#>  5     5 NA    NA   
#>  6     6 NA    NA   
#>  7     7 NA    NA   
#>  8     8 NA    NA   
#>  9     9 NA    NA   
#> 10    10 NA    NA

创建于 2023-10-31 使用 reprex v2.0.2

使用该参数允许数据帧中已存在的列名。.name_repair