У меня есть матрица с множеством строк. Скажем,
M = matrix(1:20, nrow = 4, ncol = 5)
И у меня есть пороговая переменная, например,
threshold = c(4,7,11,14,17)
Теперь я хочу, чтобы R сравнил каждую строку в матрице с этим пороговым значением по значению и сказал,хотя бы одно значение в этой строке превышает соответствующее значение этого порога. Т.е. M [1,1] следует сравнивать с порогом [1], M [1,2] с порогом [2] и т. Д.
В идеале я хотел бы иметь новую переменную, назовем ее check, только с 1 / ЛОЖЬ (по крайней мере 1 значение в строке превышает пороговое значение) или 0 / ИСТИНА (таких значений нет). До сих пор я мог запрограммировать следующее:
check = apply (M, MARGIN=1, (ifelse((M[,] < threshold), 1, 0)))
check = apply (check, MARGIN=1, sum)
check = check == 0
Но есть три проблемы:
- Может быть, это не лучший способ решить проблему? У меня много данных, и я думаю, что это может работать очень медленно ..
Это не работает, R говорит:
check = apply (M,MARGIN = 1, (ifelse ((M [,] <порог), 1, 0))) Ошибка в match.fun (FUN): '(ifelse ((M [,] <порог), 1, 0))'не является функцией, буквой или символом </p>
Даже если я выполняю только
ifelse ((M
для первой строки я получаю
[1,] 1 1 1 0 0
Что не соответствует действительности, поскольку в первой строке нет значений, превышающих пороговое значение. Кажется, что R просто сравнивает всю первую строку с 1-м элементом порога, затем весь 2-й ряд со вторым значением и т. Д., И это не то, что я хочу ...
Большое спасибо заранее!