有没有一个R函数可以读取一个特定的值并移动到下一列?

问题描述 投票:1回答:1

我想知道R是否可以在矩阵中按列读取一个特定的值(该值在移动到下一列之前只能读取一个特定的值(超过x))。在移动到下一列之前,这个值只能被确认一次。

说明

          C1  C2  C3

R1        (10,15*,5)

R2        (20*,10,5)

R3        (5,10,20*)

数值在15及以上的将根据栏目考虑一次。

预期的结果。

[1] 20, 15, 20

谢谢支持!

r matrix multiple-columns
1个回答
1
投票

下面的代码可以查找值,直到第一次出现一个值为止。>= 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)

1
投票

您可以使用 max.col 转置数据后,创建一个行列矩阵,将每一列的数据子集。使用@Darren的数据:

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

阅读关于 ties.method?max.col 要知道如何处理纽带。

© www.soinside.com 2019 - 2024. All rights reserved.