我有一个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...}
}
答案 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
的警告。