检查矢量分量是否为数字

时间:2016-03-10 18:44:19

标签: r

假设我有一个向量

x <- c('a', 'b', 1, 2)

我最简单的方法是获得一个输出,指示x的组件是否为数字?即,输出应为

something(x) 

[1] FALSE FALSE TRUE TRUE

我知道如何执行此操作的方法是将x转换为矩阵并使用apply

apply(as.matrix(x), FUN = is.numeric, MARGIN = 1)

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

1 个答案:

答案 0 :(得分:2)

我们可以使用is.naas.numeric

!is.na(as.numeric(x))
#[1] FALSE FALSE  TRUE  TRUE

带有友好警告

或使用grep仅匹配从开头(^)到结尾($)的数字元素

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