如何用矩阵填充指定范围的数据表

时间:2018-01-16 09:33:14

标签: r data.table

以下是一个最小的例子:

library(data.table)

#Create example dt
dt <- as.data.table(matrix(ncol = 20, nrow = 2))
colnames(dt) <- c(paste0("COV", seq(10)), paste0("dum", seq(10)))
mapply(function(i) {eval(parse(text = paste0("dt[, COV", i, ":=as.numeric(COV", i, ")]")))},
       seq(10))
sapply(dt, class)

#Create example dt2
dt2 <- matrix(c(seq(10), seq(10)*2), ncol = 10, nrow = 2, byrow = T)

dt2是2x10,我想将其填入dt[1:2, 1:10]

当然,for循环解决方案很简单:

for (i in 1:10) {
      dt[, paste0("COV", i)] <- dt2[, i]
}

但我觉得在逃避使用for循环的阶段,似乎非常气馁。

我尝试了其他功能,例如sapplymapplydo.call,甚至与eval(parse(text = sth))结合使用。但到目前为止,没有什么能真正奏效。

对我有什么建议吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

也许这就是:

 dt[1:2,1:10] <- as.data.frame(dt2)