【发布时间】:2017-01-11 17:08:51
【问题描述】:
似乎这个问题应该被问过很多次,但我正在搜索Questions that may already have your answer,但没有成功。
如何使用布尔运算符(不使用subset())对矩阵的列进行子集化?
> m = matrix(c("A", "B", "B", "B", "C", "A", "C", "C", "D"), nrow = 3)
> m
[,1] [,2] [,3]
[1,] "A" "B" "C"
[2,] "B" "C" "C"
[3,] "B" "A" "D"
请注意,这些列没有名称,我希望 any 列在某些条目中包含值“D”。
例如,在this post 中,调用grades[grades[,"pass"] == 2,]。除了调用是提取行这一事实以及 pass 引用单个列这一事实之外,没有列的名称。
我试过了:
> m[m == "D", ]
Error in m[m == "D", ] : (subscript) logical subscript too long
> m[which(m=="D"), ]
Error in m[which(m == "D"), ] : subscript out of bounds
> m = as.data.frame(m) # Turning the matrix into a df
> m[m == "D", ]
V1 V2 V3
NA <NA> <NA> <NA>
【问题讨论】: