R 将向量作为单独的新列追加到data.table,向量循环使用单个值
我想向R 将向量作为单独的新列追加到data.table,向量循环使用单个值,r,data.table,R,Data.table,我想向data.table中添加一个向量,该向量的每个元素名称对应一个新列,并根据向量的元素值重复该值 因此: x <- data.table(a=1:2, b=3:4) v <- c(c=5, d=6) 我尝试过的事情: cbind将向量添加为单个列: cbind(x, v) # a b v # 1: 1 3 5 # 2: 2 4 6 使用来自的方法也会错误地矢量化(水平而不是垂直): 循环工程: for (i in seq_along(v)) x[, (names(v)
data.table
中添加一个向量,该向量的每个元素名称对应一个新列,并根据向量的元素值重复该值
因此:
x <- data.table(a=1:2, b=3:4)
v <- c(c=5, d=6)
我尝试过的事情:
cbind
将向量添加为单个列:
cbind(x, v)
# a b v
# 1: 1 3 5
# 2: 2 4 6
使用来自的方法也会错误地矢量化(水平而不是垂直):
循环工程:
for (i in seq_along(v)) x[, (names(v)[i]) := v[i]]
结果:
x
# a b c d
# 1: 1 3 5 6
# 2: 2 4 5 6
我们也可以在不循环的情况下完成这项工作
x[, names(v) := as.list(v)]
x
# a b c d
#1: 1 3 5 6
#2: 2 4 5 6
更好的
for
循环可能是for(name in names(v))set(x,j=name,value=v[name])
.Ah,as.list
而不是list
,谢谢。为什么名称(v)
周围不需要paren?它也适用于它们。@MaxGhenis使用parens可能更好,因为它更通用,即'cols@Max Really,v
应该从一开始就使用v=list(c=…)
指定。表行是(有序的)元组而不是向量。它适用于vlist,而不是说“带单个值”,您想要的术语是“向量循环单个值”
x
# a b c d
# 1: 1 3 5 6
# 2: 2 4 5 6
x[, names(v) := as.list(v)]
x
# a b c d
#1: 1 3 5 6
#2: 2 4 5 6