如何基于R中的条件创建邻接矩阵?

时间:2019-09-09 03:03:57

标签: r adjacency-matrix

我遇到了问答:Possible-clique-numbers-of-a-regular-graph

我有一个-1向量,我需要创建一个邻接矩阵 answer((Xa, Ya), (Xb, Yb)) :- slope((Xa, Ya), (Xb, Yb), 1), slope((Xa, Ya), (Xb, Yb), -1). ,如果vecA和{{ 1}}否则。

我的尝试

A[i,j]=1

我收到此错误:

  

错误:意外的“中”于:
  “对于(1:n中的j)
  A [i,j] <-if(((i-j)%% n in“

问题:如何根据条件创建一个i−j mod n邻接矩阵?

预期结果是:

enter image description here

2 个答案:

答案 0 :(得分:1)

这是你的追求吗?

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

答案 1 :(得分:1)

尝试一下。

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