检查向量分量是否为数值

Cla*_*ist 1 r

假设我有一个向量

x <- c('a', 'b', 1, 2)
Run Code Online (Sandbox Code Playgroud)

对我来说,获得指示 的组件是否x为数字的输出的最简单方法是什么?即,输出应该是

something(x) 

[1] FALSE FALSE TRUE TRUE
Run Code Online (Sandbox Code Playgroud)

我知道如何做到这一点的方法是转换x为矩阵并使用apply

apply(as.matrix(x), FUN = is.numeric, MARGIN = 1)
Run Code Online (Sandbox Code Playgroud)

但是经过测试,这实际上不起作用 - 我忘记了类型被强制转换为字符串。

akr*_*run 5

我们可以使用is.naas.numeric

!is.na(as.numeric(x))
#[1] FALSE FALSE  TRUE  TRUE
Run Code Online (Sandbox Code Playgroud)

友好的警告

或用于grep仅匹配从 start ( ^) 到 end ( $) 的数字元素

grepl("^-?[0-9.]+$", x)
#[1] FALSE FALSE  TRUE  TRUE
Run Code Online (Sandbox Code Playgroud)