0

値の合計に基づいてデータ フレーム列を条件付きで削除する良い方法は何ですか?

たとえば、次のデータ フレームでは、値の合計がゼロのすべての列を削除したいと考えています。

df = data.frame(Dum1=c(0,0,0,1,0,0,0,0,0,0),
Dum2=c(0,0,0,0,0,0,0,0,0,0),
Dum3=c(0,0,0,1,0,1,0,0,0,0),
Dum4=c(0,0,0,0,0,0,0,0,0,0))

colSums(as.matrix(df))

Dum1 Dum2 Dum3 Dum4 
1    0    2    0 

Dum2 と Dum4 はすべてゼロなので、削除したいと思います。残念ながら、私のアプリケーションでは、どの列の合計がゼロになるかを事前に知ることはできません。または、次のような方法で削除することもできます。

df$Dum2 <- NULL
df$Dum4 <- NULL

str(df)

'data.frame':   10 obs. of  2 variables:
 $ Dum1: num  0 0 0 1 0 0 0 0 0 0
 $ Dum3: num  0 0 0 1 0 0 0 0 0 0

どんな援助でも大歓迎です

4

2 に答える 2

2
df[,which(colSums(df) == 0)] <- list(NULL)
于 2013-09-11T20:17:39.637 に答える