是否有读取特定值并移动到下一列的 R 函数?

Is there an R function that reads a specific value and move to the next column?

我想知道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 并创建一个 row/column 矩阵来对每一列的数据进行子集化。使用@Darren 的数据:

m[cbind(max.col(t(m) >= 15, ties.method = 'first'), 1:ncol(m))]
#[1] 20 15 20

阅读 ?max.col 中的 ties.method 了解如何处理平局。