将NA替换为NULL。

3

我有一个带有NA的样本向量,我想将这些NA替换为NULL。

ts<-c(12,NA,45,16,48,69,NA,3)

我尝试了这个方法,但没有成功。

ts[is.na(ts)]<-NULL

有没有任何方法可以做到这一点?谢谢。

9
无法执行,NULL具有特殊含义,您可以插入字符串“NULL”。 - user2974951
为什么不使用已知和经过验证的插补方法来替换它呢? - NelsonGon
但如果我使用字符串,就无法将该向量用于计算(平均值、中位数)。 - Dasaru
向量中不允许使用NULL。当您尝试将其设置为向量中的值时,它会被静默忽略...对于任何向量(矩阵或数组),NA表示缺失值。NULL则不是。 - Chuck Ramirez
1
你为什么想要用NULL替换NA?像计算平均数/中位数这样的计算,保留NA并运行例如mean(ts, na.rm=T)应该更加安全。如果使用NULL而不是NA,你期望的行为是什么? - dom
显示剩余3条评论
2个回答

1
据我所知,向量不能包含值NULL。它将被省略掉。 例如:
ts <- c(1,2,NULL,NULL)
ts
[1] 1 2

你为什么要首先进行这种替换操作?


嗨,朱利安,对于像平均值、中位数这样的操作,它们不会被省略。
ts<-c(12,NA,45,16,48,69,NA,3) ts [1] 12 NA 45 16 48 69 NA 3 ts[2] [1] NA
- Dasaru
只需在语句中加入na.rm=T即可。这样,NA值将被忽略。 - Julian_Hn
对不起,Simonare,我不知道这个限制。 - Julian_Hn
如果我将这个向量作为数据框的一列,并使用 na.rm,它将删除包括其他值在内的整行。- @Julian_Hn - Dasaru

0

虽然并不是真正的NULL,但却能够胜任其工作。

forcats::fct_explicit_na(as.character(ts),"NULL")

不幸的是,是的! - NelsonGon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接