如何根据 R 中的条件创建邻接矩阵?
How to create an adjacency matrix based on a condition in R?
我看到了问答:Possible-clique-numbers-of-a-regular-graph。
我有一个 vec
向量,我需要创建一个邻接矩阵 A
这样 A[i,j]=1
如果 i−j mod n
是 vec
的一个元素并且A[i,j]=0
否则。
我的尝试:
k <- 4
n <- 10
vec <- c(seq(-k+1, -1), seq(1, k+1))
A <- matrix(0, n, n)
for (i in 1:n)
for (j in 1:n)
A[i,j] <- if((i - j) %% n in vec) 1
我收到这个错误:
Error: unexpected 'in' in:
"for (j in 1:n)
A[i,j] <- if((i - j) %% n in"
问题:如何根据条件创建(n x n)
-邻接矩阵?
预期结果是:
这就是你想要的吗?
k <- 4
n <- 10
vec <- c(seq(-k+1, -1), seq(1, k+1))
outer(vec, vec, FUN = function(i, j) ifelse((i - j %% n) %in% vec, 1, 0))
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
#[1,] 0 0 0 0 0 0 0 0
#[2,] 0 0 0 1 0 0 0 0
#[3,] 0 0 0 1 1 0 0 0
#[4,] 0 0 0 0 1 1 1 0
#[5,] 0 0 0 1 0 1 1 1
#[6,] 0 0 0 1 1 0 1 1
#[7,] 1 0 0 1 1 1 0 1
#[8,] 1 1 0 1 1 1 1 0
试试这个。
k <- 4
n <- 10
vec <- c(seq(1, k-1), seq(n-k+1, n-1)) # changed
A <- matrix(0, n, n)
for (i in 1:n) for (j in 1:n) A[i,j] <- (abs(i-j%%n)) %in% vec # changed
我看到了问答:Possible-clique-numbers-of-a-regular-graph。
我有一个 vec
向量,我需要创建一个邻接矩阵 A
这样 A[i,j]=1
如果 i−j mod n
是 vec
的一个元素并且A[i,j]=0
否则。
我的尝试:
k <- 4
n <- 10
vec <- c(seq(-k+1, -1), seq(1, k+1))
A <- matrix(0, n, n)
for (i in 1:n)
for (j in 1:n)
A[i,j] <- if((i - j) %% n in vec) 1
我收到这个错误:
Error: unexpected 'in' in:
"for (j in 1:n)
A[i,j] <- if((i - j) %% n in"
问题:如何根据条件创建(n x n)
-邻接矩阵?
预期结果是:
这就是你想要的吗?
k <- 4
n <- 10
vec <- c(seq(-k+1, -1), seq(1, k+1))
outer(vec, vec, FUN = function(i, j) ifelse((i - j %% n) %in% vec, 1, 0))
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
#[1,] 0 0 0 0 0 0 0 0
#[2,] 0 0 0 1 0 0 0 0
#[3,] 0 0 0 1 1 0 0 0
#[4,] 0 0 0 0 1 1 1 0
#[5,] 0 0 0 1 0 1 1 1
#[6,] 0 0 0 1 1 0 1 1
#[7,] 1 0 0 1 1 1 0 1
#[8,] 1 1 0 1 1 1 1 0
试试这个。
k <- 4
n <- 10
vec <- c(seq(1, k-1), seq(n-k+1, n-1)) # changed
A <- matrix(0, n, n)
for (i in 1:n) for (j in 1:n) A[i,j] <- (abs(i-j%%n)) %in% vec # changed