У меня очень большая матрица, полная булевых ИСТИНА и ЛОЖЕЙ.Мне нужно проверить определенные комбинации столбцов, чтобы найти строки, в которых либо все указанные столбцы имеют значение true, либо (в некоторых случаях) любой из указанных столбцов имеет значение true.
Я могу сделать это с помощью apply () и всех():
> toymat <- matrix(sample(c(F,T),50,rep=T),5,10)
> toymat[,c(1,5,6)]
[,1] [,2] [,3]
[1,] TRUE FALSE FALSE
[2,] FALSE FALSE TRUE
[3,] TRUE FALSE FALSE
[4,] TRUE TRUE FALSE
[5,] FALSE FALSE TRUE
> apply(toymat[, c(1,5,6)],1,all)
[1] FALSE FALSE FALSE FALSE FALSE
Но если я вызываю apply с функцией, которая изменяет значение, кажется, что она передается по значению, а не по ссылке.Другими словами, он создает временную копию «toymat [, c (1,5,6)]» для запуска применения apply (что было бы нежелательно, поскольку фактическая матрица огромна, и код будет делать это много раз)..
Есть ли способ, которым я могу И или ИЛИ вместе произвольное количество выбранных столбцов или выбранных строк без создания временной копии?