按 rown 和名称 - r 将单个向量元素分配给各个列



我主要使用数据表,但数据框解决方案也可以。 我有一个返回此数据结构的应用程序的结果

applyres=structure(c(0.0260, 3.6775, 0.92
), .Names = c("a.1", "a.2", "a.3"))

然后我有一个数据表

coltoadd=c('a.1','a.2','a.3')
dt <- data.table(variable1 = factor(c("what","when","where")))
dt[,coltoadd]=as.numeric(NA)

现在我想将 applyres 的元素添加到相应的列中,一次只添加一行,因为 applyres 是从另一个函数计算的。我尝试了不同的任务,但似乎没有任何效果。理想情况下,我想根据列名称进行分配,以防列在两个结构之一中更改顺序。

这行不通

dt[1,coltoadd]=applyres

我也试过

dt[1,coltoadd := applyres]

并尝试将 applyrest 更改为矩阵或数据表并转置。 我想做这样的事情

dt[1,coltoadd[i]]=applyres[coltoadd[i]]

但不确定它是否应该循环,似乎不是最好的方法。 如果我有大量列,如何避免执行单个作业?

1( data.frame转换为data.frame,执行分配并转换回来。

DF <- as.data.frame(dt)
DF[1, -1] <- applyres
# perform remaining of assignments
dt <- as.data.table(DF)

2(循环 另一种可能性是for循环:

for(i in 2:ncol(dt)) dt[1, i] <- applyres[i-1]

最新更新