138

as.numeric私は通常、警告を受けないように R をコーディングすることを好みますが、 を使用して文字ベクトルを変換するときに警告を受けないようにする方法がわかりません。

例えば:

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

強制的に NA が導入されたため、警告が表示されます。強制的に導入された NA が必要です。「はい、これが私がやりたいことです」と伝える方法はありますか。それとも、警告を受け入れるべきですか?

または、このタスクに別の関数を使用する必要がありますか?

4

4 に答える 4

156

使用suppressWarnings():

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

これにより、警告が抑制されます。

于 2013-02-20T16:38:53.787 に答える
38

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
于 2013-02-20T16:42:40.387 に答える
33

一般に、警告を抑制することは最善の解決策ではありません。予期しない入力が提供されたときに警告を受け取りたい場合があるからです。
以下のソリューションは、データ型変換中に 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
于 2016-03-26T19:12:57.310 に答える