r编程 - 如果是数字,则检查向量中的每个值

时间:2016-03-05 14:03:04

标签: r

我正在尝试在R中创建一个逻辑向量,它将指示完整向量的每个值,如果它是数字的话。

我正在尝试使用函数is.numeric,但它只检查所有向量是否为数字或不是:

vec<-c(1,2,3,"lol")
t<-is.numeric(c[]) 
t

将生成FALSE

我查看here,但它只会告诉我如何检查整个矢量并获得单个值

我看了here,但问题不是有限的,而是无限的

我正在尝试获取一个数据集,其中一些值是数字,另一个是一个暗示没有值的字符串,并且仅在数值中找到最小值。为此我尝试创建一个逻辑向量,如果数字是否为数字,将对矢量的每个条目说。这对我来说很重要,因为我可以创建该向量,并且如果可能的话,我试图避免完整的循环和构造该向量。

2 个答案:

答案 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

注意:没有警告信息。