R函数gsub仅用“。”替换案例。

时间:2016-11-07 16:07:51

标签: r

我的矢量有一些缺失值,用点“。”标记。在我的向量中,我想替换“。”通过“NA”而不影响其他值中的小数点,

例如:

vect <- c( 1.1, ".", 2.5, ".", 3.0)
> vect
[1] "1.1" "."   "2.5" "."   "3"

我已经使用gsub函数进行替换,我希望得到类似的内容:

vect2
[1] 1.1 NA 2.5 NA 3.0

我在下面尝试过这些命令:

> gsub(".", NA, vect)
[1] NA NA NA NA NA

> gsub(".","NA", vect)
[1] "NANANA" "NA"     "NANANA" "NA"     "NA"

> gsub("\\.\\b","NA", vect)
[1] "1NA1" "NA"   "2NA5" "NA"   "3"

如何告诉R只替换标有“。”的缺失值。不改变其他值的小数点?谢谢:))

1 个答案:

答案 0 :(得分:3)

我们可以使用sub。将模式指定为.作为字符串中的唯一字符,并将其替换为NA。 .是一个元字符,表示任何字符,因此我们要么转义(\\.)要么使用fixed = TRUE(但是,使用start(^)并结束{{1}对于字符串,转义路径是最安全的。

$

通常的方法是as.numeric(sub("^\\.$", NA, vect)) #[1] 1.1 NA 2.5 NA 3.0 ,因为它会将as.numeric字符串转换为character并发出警告。

NA