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

标签 r data.table

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

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) 中出错:未找到对象“NA”

但是如果我使用

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

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

有人可以帮助我吗?

谢谢

最佳答案

如果我们使用正确的列名,它就会起作用,并且我们不需要 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"))

关于将 N/A 替换为 data.table 中的其他值会返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35090595/

相关文章:

r - 如何从数组R中的某个数字开始?

r - geom_smooth 提供与单独的 nls 不同的拟合

R - 将列名传递到 data.table 公式中 - get 和 eval 之间的区别

r - 当某些列名可能不存在时,使用data.table::setnames()

R并行共享内存对象(Windows)

r - 从嵌套条目创建数据框

r - 如何创建一个 Shiny 的应用程序,其中选项卡仅在满足条件时才可见

r - 使用 R 识别文本段落中的差异

r - 从两个表的组合中查找最大值(for 循环太慢)

r - 如果最大组值 > 某个值,则过滤 data.table 组中的行