1

data.frameたとえば、5列30行のaがあります。各列を繰り返し処理し、grep関数を使用して、文字aZを探して数値ではない行を識別します。私はかなりのテストをしました、そしてそれはうまくいくようでした。しかし、Rによって9e-10に変換された数値が0.0000000009である場合がありました。この行/番号は、明らかに数値であるにもかかわらず、grepによって数値ではないと識別されました。私の質問は、文字aZをgrepして、パターン「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 に答える