【发布时间】:2017-11-10 17:34:07
【问题描述】:
我有以下矩阵:
x=c(0,0,0,1,1,1,2,2,2,0,1,2,0,1,2,0,1,2)
M=matrix(x,9,2)
矩阵M为:
> M
0 0
0 1
0 2
1 0
1 1
1 2
2 0
2 1
2 2
如何发现整行中(0,0)、(0,1)、(0,2)、...(即第一行、第二行、第三行等)的个数等于1 ?
【问题讨论】:
-
你的意思是行元素的总和吗?例如第 1 行 (0, 0) 为 0,第 2 行 (0, 1) 为 1,等等?如果是这样,请尝试
sum(rowSums(M) == 1) -
@duckmayr。我的意思是矩阵M的整9行向量(0,0)的个数等于1。也就是说矩阵M的整9行向量(0,0)有多少个?答案是 1。
-
我想我明白了……你的意思是该行的每个元素都等于 1;即,对于每行 (1, 1) 的两列。在这种情况下,请尝试
sum(apply(M, 1, function(x) all(x == 1))) -
不确定是否需要
table,即table(paste(M[,1], M[,2], sep="_")) -
@duckmayr 不,不是这个。有多少行等于 (0,0), (0,1), (0,2)...?这是另一种解释方式。