我有一个像这样的矩阵:
mat=matrix(c(1,1,1,2,2,2,3,4,
4,4,4,4,4,3,5,6,
3,3,5,5,6,8,0,9,
1,1,1,1,1,4,5,6),nrow=4,byrow=TRUE)
print(mat)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 1 1 1 2 2 2 3 4
[2,] 4 4 4 4 4 3 5 6
[3,] 3 3 5 5 6 8 0 9
[4,] 1 1 1 1 1 4 5 6
我想找出矩阵的行数,我们可以在其中找到具有最大频率的对象,尤其是那些具有多个最大频率的对象。在这种情况下,我想使用这样的新载体:
[,1]
[1,] "1"
[2,] "3"
或类似的东西。焦点位于具有大于一个最大值的行的索引上。
我们可以使用apply
withMARGIN=1
遍历行。使用来获取每个唯一元素的频率tabulate
,检查其是否等于max
值(==
),然后使用which
来获取数字索引。max
如果有联系,这将返回所有值。
lst <- apply(mat, 1, function(x) {x1 <- tabulate(x)
which(x1 == max(x1))
})
如果max
每行只有一个值,则输出为vector
否则将得到list
输出。
如果我们需要提取具有多个元素的元素 max
lst[lengths(lst)>1]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句