私は、大抵は数値で構成され、時折既知の文字列といくつかのNA
値からなる文字変数を持つデータフレームを持っています。条件付きで小数点以下1桁に数値を再フォーマットしたいが、文字とNA
の値だけを残しておきたい。dplyr条件付き突然変異自体
このコードは、おもちゃのデータフレーム上で動作し、所望の出力生成:
df <- data.frame(a = c("1", "2", "3", "none", NA),
stringsAsFactors = FALSE)
test <- df %>%
mutate(a = ifelse(is.na(a) | a == "none",
a,
format(round(as.numeric(a), 1), nsmall = 1)))
test
# a
# 1 1.0
# 2 2.0
# 3 3.0
# 4 none
# 5 <NA>
をしかし、私はB/C format(round(as.numeric(a), 1), nsmall = 1)))
がまだ動作している場合であると信じて、警告メッセージ
Warning message:
In format(round(as.numeric(c("1", "2", "3", "none", NA)), 1), nsmall = 1) :
NAs introduced by coercion
をスローしますそのベクトルの値はifelse
の条件がfalseのmutate
ステートメントでのみ使用されますが、ベクトル全体に適用されます。
suppressWarnings()
にすべてをラップすることができますが、dplyr
フレームワーク内で警告なしで目的の出力を生成する方法がありますか?私はそれを行うにはdata.table
方法があります確信しているが、これは何かのためにdata.table
を必要としないパッケージの一部であり、...このような小さな作品のためにそれが必要な作るために愚かなようだ