我主要处理数据表,但是数据框架解决方案也可以工作。 我有一个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]]
但是不确定是否应该循环执行,这似乎并不是最好的方法。 如果我有大量的列,如何避免进行单项分配?
答案 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]