2017-04-19 8 views
4

複数のサブセット条件を表現私はこのようになりますデータテーブルを持っている:Rデータテーブル - succintly

set.seed(1) 
n <- 10; p <- 6 
dat <- as.data.table(matrix(sample(c(0,1),n*p,replace = TRUE), n, p)) 
setnames(dat, letters[1:p]) 

私は列deと行のみを含むようにデータテーブルをサブセットしたい、fすべての大きいです0より。私は次のように同じサブセット条件を表現しようとすると、それは私にエラーを与え、しかし

dat[d > 0 & e > 0 & f > 0] 

:私は、次のコードでこれを行うことができます

cols <- c("d", "e", "f") 
dat[cols > 0] 

これを行うには正しい方法は何ですか?

ありがとうございました。

答えて

3

我々は、それが0より大きいかどうかをチェックし、その後Reduce&で、私達はかどうかをチェックすることにより、論理ベクトルを取得し、data.table(.SD)のサブセットを通じて、.SDcolsでループを「colsの」を指定することができます対応する行のすべての要素が0より大きく、それを使用してデータセットの行をサブセット化します。

dat[dat[, Reduce(`&`, lapply(.SD, `>`, 0)),.SDcols = cols]] 
関連する問題