我的矢量有一些缺失值,用点“。”标记。在我的向量中,我想替换“。”通过“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只替换标有“。”的缺失值。不改变其他值的小数点?谢谢:))
答案 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