0

大家好,我有数字向量x <- c(1,2,3,3)

我想将所有数字相互比较并返回一个 TRUE 和 FALSE 的 4 x 4 矩阵,指示它们是否相同。

尝试使用循环但未成功:

matx <- matrix(FALSE,nrow=length(x),ncol=length(x))
for(i in nrow(matx)) {
  for (j in ncol(matx)) {
    matx[x==x[i],] <- TRUE
  }
}
4

2 回答 2

3

该功能outer是您正在寻找的。具体来说,

outer(x, x, `==`)
于 2018-01-20T22:54:40.093 回答
1

outer显然是要走的路。但是如果你想使用循环,你需要正确定义你的迭代器:

x <- c(1,2,3,3)
N <- length(x)
comp = matrix(, nrow=N, ncol=N)

for(i in 1:N) {
    for(j in 1:N) {
        comp[i, j] = (x[i] == x[j])
    }
}
comp

TRUE    FALSE   FALSE   FALSE
FALSE   TRUE    FALSE   FALSE
FALSE   FALSE   TRUE    FALSE
FALSE   FALSE   FALSE   TRUE
于 2018-01-20T22:56:23.163 回答