1

我有一个data.frame假设 5 列和 30 行。我遍历每一列并使用该grep函数通过查找字母 aZ 来识别非数字行。我做了很多测试,它似乎工作正常。但是,我刚刚遇到一个数字是 0.0000000009 的情况,它被 R 翻译成 9e-10。这个行/数字被 grep 识别为不是数字,即使它显然是一个数字。我现在的问题是,我怎样才能 grep 字母 aZ 但排除模式“e-”?这是我的 R 代码:

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

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

}
4

1 回答 1

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

于 2013-01-13T17:17:58.593 回答