我正在尝试在R中创建一个逻辑向量,它将指示完整向量的每个值,如果它是数字的话。
我正在尝试使用函数is.numeric
,但它只检查所有向量是否为数字或不是:
vec<-c(1,2,3,"lol")
t<-is.numeric(c[])
t
将生成FALSE
我查看here,但它只会告诉我如何检查整个矢量并获得单个值
我看了here,但问题不是有限的,而是无限的
我正在尝试获取一个数据集,其中一些值是数字,另一个是一个暗示没有值的字符串,并且仅在数值中找到最小值。为此我尝试创建一个逻辑向量,如果数字是否为数字,将对矢量的每个条目说。这对我来说很重要,因为我可以创建该向量,并且如果可能的话,我试图避免完整的循环和构造该向量。
答案 0 :(得分:6)
我们可以使用数字强制来获得优势。 R会告诉我们确保我们打算将字符串更改为NA
。在这种情况下,它正是我们正在寻找的:
!is.na(as.numeric(vec))
#[1] TRUE TRUE TRUE FALSE
#Warning message:
#NAs introduced by coercion
答案 1 :(得分:4)
我们可以使用grepl
来获取逻辑向量。我们匹配仅包含从开头(^
)到结尾($
)的数字。我还包括可能存在负数和浮点数的可能性。
grepl('^-?[0-9.]+$', vec)
#[1] TRUE TRUE TRUE FALSE
注意:没有警告信息。