除了e-以外的a-Z

时间:2013-01-13 16:56:53

标签: r grep

我有一个data.frame让我们说5列30行。我遍历每一列并使用grep函数通过查找字母a-Z来识别非数字的行。我做了一些测试,似乎工作正常。但是,我刚才有一个数字是0.0000000009的情况,由R翻译成9e-10。 grep将此行/数字标识为非数字,即使它显然是一个数字。我现在的问题是,我怎样才能找到字母a-Z但不包括“e-”字样?这是我的R代码:

for(i in 1:ncol(m)) {

    if(length(grep("[a-zA-Z]", m[,1])) > 0) { # do something...}

}

1 个答案:

答案 0 :(得分:2)

只是把它写成答案:

df <- data.frame(x = c(1:5, 9e-6, letters[1:5]), y = c(1e-11, rep("e", 5), 6:10))
df$x <- factor(df$x)
df$y <- factor(df$y)
sapply(df, function(w) which(is.na(as.numeric(as.character(w)))))

忽略来自as.numeric的警告。