R:将列表中的所有数字与其自身和 return TRUE/FALSE 的矩阵进行比较
R: Comparing all numbers in a list to themselves and return a matrix of TRUE/FALSE
大家好我有数值向量x <- c(1,2,3,3)
我想将所有数字相互比较,return 一个由 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
}
}
函数 outer
就是您要找的。具体来说,
outer(x, x, `==`)
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
大家好我有数值向量x <- c(1,2,3,3)
我想将所有数字相互比较,return 一个由 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
}
}
函数 outer
就是您要找的。具体来说,
outer(x, x, `==`)
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