使用第二个data.table中的值填充NA值的data.table行

时间:2014-08-20 09:19:36

标签: r data.table

我正在使用内置数据集" mtcars"在R.我已将其转换为data.table格式。我有另一个NA值的data.table,m1。 m1的尺寸与mtcars的尺寸相同,比如尺寸为32X11。我的目标是在m1

中保存一些mtcars行

(即,m1[c(1,11,13),]<-mtcars[c(1,11,13),]

使用data.table。但每当我试图这样做时,它为1,11,13行m1赋予TRUE / FALSE值。如何在m1中保存1,11,13行mtcars? (注意:我只想使用data.table格式)。 任何帮助将不胜感激。在此先感谢!!

1 个答案:

答案 0 :(得分:5)

你根本不应该做那样的事情(你的目标可能有更好的方法),但你需要用m1填充NA_real_值。

library(data.table)
DT <- data.table(mtcars)

m1 <- data.table(matrix(NA, nrow=32, ncol=11))
#fills m1 with NA_logical_ values
m1[c(1,11,13),] <- DT[c(1,11,13),]
#warnings and logical values in result

m1 <- data.table(matrix(NA_real_, nrow=32, ncol=11))
m1[c(1,11,13),] <- DT[c(1,11,13),]
#works

m1 <- data.table(matrix(NA_real_, nrow=32, ncol=11))
m1[c(1,11,13), colnames(m1) := DT[c(1,11,13),]]
#assigns by reference

显然,如果您有混合数据类型,则还需要混合NA类型。阅读help("NA")