如何强制引进新加坡时如何避免警告

我通常更喜欢编码R,所以我不会得到警告,但我不知道如何避免使用as.numeric转换字符向量时发出警告。

例如:

 x <- as.numeric(c("1", "2", "X")) 

会给我一个警告,因为它通过胁迫引入新加坡。 我希望通过强制手段引入新来的人 – 有没有办法告诉它“是这就是我想要做的事”。 或者我应该忍受这个警告?

或者我应该为这个任务使用不同的function?

使用suppressWarnings()

 suppressWarnings(as.numeric(c("1", "2", "X"))) [1] 1 2 NA 

这抑制了警告。

suppressWarnings()已经被提及。 另一种方法是手动将有问题的字符转换为NA。 对于你的特定问题, taRifx::destring就是这样做的。 这样,如果你从你的函数中得到一些其他的,意外的警告,它不会被压制。

 > library(taRifx) > x <- as.numeric(c("1", "2", "X")) Warning message: NAs introduced by coercion > y <- destring(c("1", "2", "X")) > y [1] 1 2 NA > x [1] 1 2 NA 

一般来说,禁止警告并不是最好的解决办法,因为您可能希望在提供某些意外的input时被警告。
下面的解决scheme是在数据types转换期间仅维护NA的包装。 不需要任何包装。

 as.num = function(x, na.strings = "NA") { stopifnot(is.character(x)) na = x %in% na.strings x[na] = 0 x = as.numeric(x) x[na] = NA_real_ x } as.num(c("1", "2", "X"), na.strings="X") #[1] 1 2 NA