Воссоздайте данные:
a <- array(c(1,0,0,0,1,0,1,1,0,0,0,1,0,1,0), dim=c(5,3))
Теперь создайте вектор, который соответствует условию.
cond <- c(1, 0, 0)
Затем оператор apply
, заключенный в вызов which
, сообщит вам, какие строки соответствуют вашему условию.
which(apply(a, 1, function(x)all(x==cond)))
1] 1 5
Наконец, чтобы извлечь строки, в которых выполняется это условие:
x <- which(apply(a, 1, function(x)all(x==cond)))
a[x, ]
[,1] [,2] [,3]
[1,] 1 0 0
[2,] 1 0 0
Результирующий массив не содержит много информации. Возможно, вы хотели узнать, сколько строк соответствует условию?
length(x)
[1] 2
Чтобы ответить на следующий вопрос. Как создать вектор состояния, когда массив большой?
Ну, один из способов заключается в следующем. Допустим, у вас есть массив из 100 столбцов в ширину, поэтому вам нужен вектор длиной 100, и вы хотите, чтобы третий элемент был равен 1:
cond <- rep(0, 100)
cond[3] <- 1
cond
[1] 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[38] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[75] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
person
Andrie
schedule
11.07.2011