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

时间:2015-12-16 14:48:04

标签: r data.table

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

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

有办法吗?

2 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:5)

目前尚不清楚您是需要list作为my_vec还是vector。如果是后者,我们按行序列分组,在每个组中将'y'和paste元素复制为0。

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