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

问题描述 投票:0回答:1

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

> 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()等是否存在问题。如果您需要任何其他信息,请告诉我。预先感谢!

r for-loop dplyr tibble
1个回答
2
投票
稍作调整,您的代码就可以工作,尽管可能有更好的方法可以做到这一点:

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

© www.soinside.com 2019 - 2024. All rights reserved.