用data.table中的其他值替换N / A会返回错误

时间:2016-01-29 17:34:37

标签: r data.table

我想用data.table中的特定列的其他值替换NA。 我试过下面的链接但是出现了一些错误。

How to replace NA values in a table for selected columns? data.frame, data.table

我使用的代码是

df<-data.table(aa<-(1:4),ba<-c(NA,1,3,4),ca<-c(NA,"2012-01-02","2012-02-02","2012-03-02"))

df[is.na(get(ca)),(ca):="2012-04-01"]

我收到错误消息:get(c)中出错:object&#39; NA&#39;找不到

但如果我使用

df[is.na(ca),(ca):="2012-04-01"]

它会返回我不想要的结果。

任何人都可以帮助我吗?

由于

1 个答案:

答案 0 :(得分:6)

如果我们使用正确的列名称,它将起作用,我们不需要get

df[is.na(ca), ca:= "2012-04-01"]
df
#  aa ba         ca
#1:  1 NA 2012-04-01
#2:  2  1 2012-01-02
#3:  3  3 2012-02-02
#4:  4  4 2012-03-02

data.table来电中,我们使用=代替<-。另外,正如@Frank所提到的,分配(ca)ca是不同的,因为前者可以是vector字符串,可用于为新列创建名称。

数据

df<-data.table(aa=(1:4),ba=c(NA,1,3,4),
     ca=c(NA,"2012-01-02","2012-02-02","2012-03-02"))