Есть ли функция R, которая считывает заданное значение c и перемещается в следующий столбец? - PullRequest
1 голос
/ 27 мая 2020

Я хотел бы знать, может ли R прочитать определенное c значение по столбцу в матрице (значение будет читать только одно определенное c значение (больше x) перед переходом к следующему столбцу). Эти значения можно подтвердить только один раз перед переходом к следующему столбцу.

Иллюстрация

          C1  C2  C3

R1        (10,15*,5)

R2        (20*,10,5)

R3        (5,10,20*)

Значения 15 и выше будут учитываться один раз на основе столбца.

Ожидаемый результат:

[1] 20, 15, 20

Спасибо за служба поддержки!

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Вы можете использовать max.col после транспонирования данных и создать матрицу строк / столбцов для подмножества данных из каждого столбца. Использование данных @ Darren:

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

Прочтите информацию о ties.method в ?max.col, чтобы узнать, как обращаться со связями.

1 голос
/ 27 мая 2020

Следующий код может находить значения до первого появления значения >= 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)
...