1

データのサブセットを調べるために使用する行列の列の論理ベクトルを計算しています。どのように組み合わせるのですか

duplicate.ids <- c(1, 10, 100)

data$Group == data$Group[person] & data$Unit != 13 & data$Unit != 17

使用できる論理ベクトルを1つ取得するには?

ETA:

私は値のマトリックスを持っています:

R> class(All)
[1] "matrix"
R> dim(All)
[1] 6712 6712
R> All[1:5,1:5]
     [,1] [,2] [,3] [,4] [,5]
[1,]    0    0    0    0    0
[2,]    0    0    0    0    0
[3,]    0    0    0    0    0
[4,]    0    0    0    0    0
[5,]    0    0    0    0    0

各列に関するメタデータの別のマトリックスがあり、さらに分析するためにこのマトリックスのサブセットを選択したいと思います。2番目のコマンドを実行して論理ベクトルを取得し、それを使用してサブセットを取得できます。

All[,data$Group == data$Group[person] & data$Unit != 13 & data$Unit != 17]

ただし、特定のインデックスのリスト(前に参照したduplicate.ids)も除外したいと思います。

4

1 に答える 1

0

を使用して論理ベクトルをインデックスのベクトルに変換し、whichを使用setdiffして集合差、つまり、重複のリストにない 2 番目の式で選択されたすべての列を計算できます。

まとめると:

All[,setdiff(which(data$Group == data$Group[person] & data$Unit != 13 & data$Unit != 17),
             duplicate.ids)]

duplicate.ids別の方法として、論理ベクトルに変換することもできます。

non.duplicate <- rep(TRUE, ncol(All))
non.duplicate[duplicate.ids] <- FALSE
ALL[,non.duplicate & data$Group == data$Group[person] & data$Unit != 13 & data$Unit != 17]
于 2012-12-13T20:00:52.493 に答える