在R中数据框中的某些位置添加多列

Adding multiple columns at certain positions in dataframe in R

我有一个与此类似的数据框:

> df <- data.frame(A1=1:3, B1=1:3, A2=1:3, B2=1:3, A3=1:3, B3=1:3)
> df

  A1 B1 A2 B2 A3 B3
1  1  1  1  1  1  1
2  2  2  2  2  2  2
3  3  3  3  3  3  3

现在,我正在寻找一些在 B1、B2 和 B3 之前添加行的代码:

  A1 AB1 B1 A2 AB2 B2 A3 AB3 B3
1  1   X  1  1   X  1  1   X  1
2  2   X  2  2   X  2  2   X  2
3  3   X  3  3   X  3  3   X  3

由于上面的数据框只是最小的、可重现的示例(实际数据框要大得多),我正在寻找使用 for 循环或使用 tidyverse 的解决方案。我想到了使用 tibble 包中的 for 循环和 add_column 的组合:

library(tibble)
  
  for (i in 1:3) {
    df <- df %>%
      add_column(paste0("AB", i, "") = "X" , .before = paste0("B", i, ""))
  }

不幸的是,这个想法行不通。我不太确定整个方法是否错误,或者 paste0() 等是否有任何问题。如果您需要任何进一步的信息,请告诉我。 T

尽管可能有更好的方法来执行此操作,但稍微调整一下您的代码即可:

for (i in 1:3) {
  df <- df %>%
    add_column(!!paste0("AB", i, collapse = "") := "X" , .before = paste0("B", i, collapse =  ""))
}