给定以下长度向量n=10
:
# [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
但是,我们知道&
operator 的结果只有在两个值都为真时才为真1
,因此我们可以用更聪明的方式来做。实际上, 的结果combn
是一个长度为的向量,45
只有一个 的值,1
其余的只是0
。
现在的问题是,我们如何在1
不应用combn
自身的情况下提取唯一的位置?一旦我们得到它,我们就可以简单地生成结果如下:
res <- rep(0, 45)
res[index] <- 1
index
质疑的立场在哪里。