r - 如何自动向数据框添加新列?(右)
问题描述
我正在尝试在 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]
}}
解决方案
数据框本质上只是引擎盖下的列表,因此您可以直接分配一列,只要您可以为其提供合适的名称。
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 日创建
推荐阅读
- javascript - momentjs- 使用 .format 时减去 LT
- parse-platform - 关于在 Parse Server 中使用 Aggregate 的困惑
- android - CustomButton android,覆盖 OnCreateDrawableState 导致应用程序崩溃
- javascript - 复制不可变数组或对象
- javascript - 从 iframe src 发布表单数据
- regex - 正则表达式匹配命令行输出
- r - 合并R数据框或数据表并覆盖多列的值
- c - 在 C89 中打印随机数组元素
- angular - 多次订阅不同页面的ionic单事件
- javascript - 如何访问索引数组的键