Учитывая следующий вектор длины n=10
:Extract определенную комбинацию из всех возможных комбинаций в R
# [1] 0 0 0 0 0 1 0 0 1 0
vec <- c(0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L)
Предположим, что мы хотим применить оператор &
для всех возможных комбинаций элементов вектора. То есть:
res <- combn(n, 2, function(v) vec[v[1]]&vec[v[2]])
# total number of possible combinations is n(n-1)/2 = 45
Однако мы знаем, что результат &
оператора справедливо только тогда, когда оба значения 1
и, следовательно, мы можем сделать это в более умным способом. Фактически, результат combn
является вектором длины 45
с одним значением 1
, а остальными являются только 0
.
Теперь вопрос в том, как мы можем извлечь позицию только 1
без применения самой combn
? После того, как мы можем получить его, мы формируем результат просто следующим образом:
res <- rep(0, 45)
res[index] <- 1
где index
это сомнение положение.
Как 'n' в' combn' функции определены? – Jaap
@Procrastinatus Maximus: 'n = 10' в первой строке. –