2017-01-03 5 views
1

私はすべての数値でなければならないdfを持っていますが、それらはすべて文字としてタイプされています。サプリでどの列が警告を出しているのか把握するには?

There were 50 or more warnings (use warnings() to see the first 50) 

が、私は警告を無視することができますが、私は問題がどこにあるかを見つけるしたいと思います:

sapply(df, as.numeric) 

警告がスローされます:私はこれをしようとしています。警告を出している列があるかどうかを調べるにはどうすればよいですか?

これはかなり基本的なようですが、どうやって取得するのか分かりません。

それが助け場合:私が望む何

test <- as.data.frame(list(c("1","2","3"), c("1","poop","3"))) 
> sapply(test, as.numeric) 
    c..1....2....3.. c..1....poop....3.. 
[1,]    1     1 
[2,]    2     NA 
[3,]    3     3 
Warning message: 
In lapply(X = X, FUN = FUN, ...) : NAs introduced by coercion 

は、列2には問題が1であることを私に伝える機能です。

+1

()[1:5]を示して? (おそらく、いくつかの要素変数がNAに強制されたと言っているでしょう) 'function(x){as.character(x)}}' –

+1

を使う方が安全でしょう。行を出力し、警告に 'options(warn = 2)'を付けてエラーにすることができます。 – Kristofersen

+1

今後の参考として、再現可能な例(データを含む)を含めてください。 –

答えて

0

@RichScrivenに感謝します。

これは動作します:

警告を何
test2 <- sapply(test, function(x) tryCatch(as.numeric(x), warning = function(w) "This one!!!")) 
which(test2 == "This one!!!") 
関連する問題