我主要使用数据表,但数据框解决方案也可以。 我有一个返回此数据结构的应用程序的结果
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]