我想知道R是否可以在矩阵中按列读取一个特定的值(该值在移动到下一列之前只能读取一个特定的值(超过x))。在移动到下一列之前,这个值只能被确认一次。
说明
C1 C2 C3
R1 (10,15*,5)
R2 (20*,10,5)
R3 (5,10,20*)
数值在15及以上的将根据栏目考虑一次。
预期的结果。
[1] 20, 15, 20
谢谢支持!
下面的代码可以查找值,直到第一次出现一个值为止。>=
15由每列。
apply(m, 2, function(x) x[1:which.max(x >= 15)])
# [[1]]
# [1] 10 20
#
# [[2]]
# [1] 15
#
# [[3]]
# [1] 5 5 20
如果你想要的第一个值是 >=
15,然后
apply(m, 2, function(x) x[which.max(x >= 15)])
# [1] 20 15 20
数据
m <- matrix(c(10, 20, 5, 15, 10, 10, 5, 5, 20), 3)
您可以使用 max.col
转置数据后,创建一个行列矩阵,将每一列的数据子集。使用@Darren的数据:
m[cbind(max.col(t(m) >= 15, ties.method = 'first'), 1:ncol(m))]
#[1] 20 15 20
阅读关于 ties.method
在 ?max.col
要知道如何处理纽带。