首页 > 解决方案 > 如何自动向数据框添加新列?(右)

问题描述

我正在尝试在 Rstudio 中创建一个脚本,在其中输入一些列,然后为每个列输入输出一个新列。问题是,我不知道要输入多少列;这个数字会改变。我正在尝试循环创建列,但是我知道的每个命令都需要列的名称,这给我带来了麻烦。我可以为新列创建随机名称,但不能使循环以列名为目标。没有名字,我不能做任何专栏。我可以将名称放在名称表中,但 add_column 似乎由于某种原因无法定位它。

如果有人能弄清楚如何添加没有名称的列,或者如何使用这种函数的名称添加它们,我将不胜感激。

colcount <- ncol(tdata)

nametable <- NULL

for (i in 2:(colcount)){
nametable[i] <- paste("v",i)
}

for (i in 2:(colcount)) {
idk4<- nametable[i]
  tdata <- add_column(tdata,idk4,.after = colcount)
}

更正的代码:

rowcount <- nrow(tdata)
colcount <- ncol(tdata)

for (i in 2:ncol(tdata)){
  to_add <- data.frame(name1 = 1:1248)  
for (c in seq_len(ncol(to_add))) {
  tdata[[paste0('v_',i-1)]] <- to_add[,c]
}}

标签: r

解决方案


数据框本质上只是引擎盖下的列表,因此您可以直接分配一列,只要您可以为其提供合适的名称。

df <- data.frame(name1 = rnorm(10), name2 = rnorm(10))
to_add <- data.frame(name1 = rnorm(10), name2 = rnorm(10))

for(i in seq_len(ncol(to_add))) {
  df[[paste0('v_', i)]] <- to_add[,i]
}

df
#>         name1      name2         v_1        v_2
#> 1   0.1664923 -0.0993323  0.00960158  0.1065084
#> 2   0.4416025  1.4305505  1.31583098 -0.7034243
#> 3  -0.2824676 -1.6445144  0.06301939 -0.6026345
#> 4   0.3295798  0.2456593  2.14454251  0.1950088
#> 5  -0.2226529  0.6365769  0.02249166 -1.4926480
#> 6   0.1480690 -0.9051266  0.20976601 -0.5762838
#> 7  -1.1215822 -0.6685792  0.29167861 -0.5923874
#> 8   0.8513272 -0.6316098 -1.04509640 -1.9839998
#> 9  -0.1280242  0.3425758  1.53816824  1.8885009
#> 10 -0.1315104 -0.9829902 -0.96036102 -1.3502144

reprex 包(v0.3.0)于 2019 年 9 月 18 日创建


推荐阅读