【问题标题】:Replace NA with NULL将 NA 替换为 NULL
【发布时间】:2019-05-20 22:02:04
【问题描述】:

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

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

我试过了,但是没用

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

有没有办法做到这一点? 谢谢。

【问题讨论】:

  • 不行,NULL有特殊含义,可以插入字符串"NULL"。
  • 为什么不使用已知且经过验证的插补方法替换它?
  • 但如果我使用字符串,我将无法使用该向量进行计算(平均值、中位数)
  • "向量中不允许有 NULL。当您尝试将其设置为向量中的值时,它会被悄悄忽略...对于任何向量(矩阵或数组),NA 表示缺失值。NULL 没有。” (r-bloggers.com/r-na-vs-null)
  • 为什么要用NULL代替NA?对于像平均值/中位数这样的计算,保留它并运行它应该更安全,例如mean(ts, na.rm=T)。如果存在 NULL 而不是 NA,您期望什么行为?

标签: r null na


【解决方案1】:

据我所知,向量不能包含 NULL 值。它只会被省略。 例如

ts <- c(1,2,NULL,NULL)
ts
[1] 1 2

您为什么首先要进行此替换?

【讨论】:

  • 嗨朱利安,对于像平均值,中位数这样的操作,它不会被省略 > ts ts [1 ] 12 不适用 45 16 48 69 不适用 3 > ts[2] [1] 不适用
  • 只需在您的陈述中包含一个 na.rm=T。然后 NA 值将被忽略
  • 对不起 Simonare,我不知道这个限制。
  • 如果我将此向量用作数据框的列,并且如果我使用na.rm,它将删除包括其他值在内的整行。 - @Julian_Hn
【解决方案2】:

不会使它成为真正的NULL,但可以完成工作。

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

【讨论】:

  • 不幸的是!
猜你喜欢
  • 2020-08-19
  • 2020-07-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-27
相关资源
最近更新 更多