Вам не нужны циклы for
, чтобы выполнить то, что вы описываете в вопросе.
Я буду использовать colMeans
, чтобы получить значения в столбце, и apply
, чтобы получить стандартные ошибки.Большая часть кода, который следует, векторизована, R способ решения проблем.
Сначала пример набора данных, поскольку вы не опубликовали ни одного.
set.seed(3623)
v <- matrix(rnorm(846*19), ncol = 19)
Теперь проблема.
r <- colMeans(v) + apply(v, 2, sd)*3
w <- which(t(apply(v, 1, `>`, r)), arr.ind = TRUE)
Если вам нужна матрица со строками и столбцами, гдезначения больше 3 стандартных ошибок, матрица w
содержит эти значения.
head(w)
# row col
#[1,] 647 1
#[2,] 124 4
#[3,] 523 4
#[4,] 631 4
#[5,] 775 5
#[6,] 607 6
Если вам нужен список только с номерами строк, split
приведенная выше матрица по столбцам.
split(w[, 1], w[, 2])