按行和名称将单独的矢量元素分配给各个列-r

时间:2018-10-25 12:00:30

标签: r data.table

我主要处理数据表,但是数据框架解决方案也可以工作。 我有一个apply的结果,该结果返回此数据结构

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 个答案:

答案 0 :(得分:0)

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]