是否有读取特定值并移动到下一列的 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
了解如何处理平局。
我想知道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
了解如何处理平局。