在向tibble添加新列时使用动态命名

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

使用bind_cols()或add_column时,我无法使用paste / paste0在循环内动态命名列。

for (i in 1:10){
abc %>%
add_column(paste0("new",i) = 1:6)
} 

上面的代码给出了一个错误。如何在循环内动态命名新列。

r tidyverse tibble
2个回答
0
投票

使用:=

for (i in 1:10){
abc %>%
add_column(!! paste0("new",i) := 1:6)
} 

0
投票

到目前为止提供的解决方案将有点脆弱并且最终无用,因为如果abc的行数不等于:=的RHS上的值向量的长度,则会出错。相反,应该使用创建或选择与数据结构的第一维相匹配的值的代码。同样重要的是:该结果的价值需要分配回abc。否则不会发生任何持久

abc <- data.frame(a=1:3)
for (i in 1:10){
   abc <- abc %>%
            add_column(!! paste0("new",i) := 1:nrow(.))
} 
© www.soinside.com 2019 - 2024. All rights reserved.