1

我正在计算矩阵中列的逻辑向量,我想用它来查看数据的子集。我将如何结合

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

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

得到一个我可以使用的逻辑向量?

预计到达时间:

我有一个值矩阵:

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

我有关于每一列的另一个元数据矩阵,我想选择这个矩阵的一个子集进行进一步分析。我可以运行第二个命令来获取一个逻辑向量,然后我可以使用它来获取一个子集

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

但我也想排除一个特定的索引列表(我之前引用的duplicate.ids)。

4

1 回答 1

0

您可以使用 将逻辑向量转换为索引向量which,然后用于setdiff计算集合差异,即第二个表达式选择的所有列不在重复列表中。

综合起来:

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 回答