我正在计算矩阵中列的逻辑向量,我想用它来查看数据的子集。我将如何结合
duplicate.ids <- c(1, 10, 100)
与
data$Group == data$Group[person] & data$Unit != 13 & data$Unit != 17
获得一个我可以使用的逻辑向量?
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
我有关于每个列的另一个元数据矩阵,我想选择该矩阵的一个子集进行进一步分析。我可以运行第二个命令来获取逻辑向量,然后我可以使用它来获取子集
All[,data$Group == data$Group[person] & data$Unit != 13 & data$Unit != 17]
但我也想排除一个特定的索引列表(我之前引用的duplicate.ids)。
答案 0 :(得分: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]