欠損値を含む大きなデータフレームの列の名前を表示したいと思います。基本的に、私は complete.cases(df) と同等のものを望んでいますが、行ではなく列が必要です。一部の列は数値ではないため、次のようなものです
names(df[is.na(colMeans(df))])
「colMeans(df) のエラー: 'x' は数値でなければなりません。」を返します。したがって、私の現在の解決策は、データフレームを転置してcomplete.casesを実行することですが、より効率的なapply(またはplyrの何か)のバリアントがあると思います。
nacols <- function(df) {
names(df[,!complete.cases(t(df))])
}
w <- c("hello","goodbye","stuff")
x <- c(1,2,3)
y <- c(1,NA,0)
z <- c(1,0, NA)
tmp <- data.frame(w,x,y,z)
nacols(tmp)
[1] "y" "z"
NAを持つ列を識別するためのより効率的な関数を誰かに教えてもらえますか?