当前位置:  开发笔记 > 编程语言 > 正文

R数据表 - 将值的向量添加为列

如何解决《R数据表-将值的向量添加为列》经验,为你挑选了2个好方法。

我想在我的数据表中创建一个新列,这个列是值的向量; 但我收到以下错误:

DT = data.table(x=rep(c("a","b"),c(2,3)),y=1:5)
> 
> DT
   x y
1: a 1
2: a 2
3: b 3
4: b 4
5: b 5
> DT[, my_vec := rep(0,y)]
Error in rep(0, y) : invalid 'times' argument

我的预期结果是:

> DT
   x y my_vec
1: a 1 0
2: a 2 0 0
3: b 3 0 0 0
4: b 4 0 0 0 0
5: b 5 0 0 0 0 0

有没有办法做到这一点?



1> eddi..:

语法有点麻烦,但你可以这样做:

DT[, my_vec := list(list(rep(0, y))), by = y]
DT
#   x y    my_vec
#1: a 1         0
#2: a 2       0,0
#3: b 3     0,0,0
#4: b 4   0,0,0,0
#5: b 5 0,0,0,0,0



2> akrun..:

目前尚不清楚您是否需要listas my_vec或a vector.如果是后者,我们按行序列分组,用'y'复制0,并将paste每个元素组合在一起.

DT[, my_vec := paste(rep(0, y), collapse=' ') , 1:nrow(DT)]
DT
#   x y    my_vec
#1: a 1         0
#2: a 2       0 0
#3: b 3     0 0 0
#4: b 4   0 0 0 0
#5: b 5 0 0 0 0 0

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有