假设我有一个向量
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)
但经过测试,这实际上不起作用 - 我忘了这些类型被强制成为字符串。
答案 0 :(得分:2)
我们可以使用is.na
和as.numeric
!is.na(as.numeric(x))
#[1] FALSE FALSE TRUE TRUE
带有友好警告
或使用grep
仅匹配从开头(^
)到结尾($
)的数字元素
grepl("^-?[0-9.]+$", x)
#[1] FALSE FALSE TRUE TRUE