0

我有一个多重图的四个矩阵,如下所示:

> projects
  1 2 3 4 5
1 0 0 4 1 0
2 0 0 3 2 5
3 0 0 0 0 0
4 0 0 0 0 1
5 0 0 0 0 0
> infrastructure
  1 2 3 4 5
1 0 0 0 5 0
2 0 0 4 0 0
3 0 0 0 2 2
4 0 0 0 0 3
5 0 0 0 0 0
> information
  1 2 3 4 5
1 0 1 3 0 0
2 0 0 2 3 4
3 0 0 0 0 0
4 0 0 0 0 0
5 0 0 0 0 0
> problems
  1 2 3 4 5
1 0 1 0 1 0
2 0 0 0 0 0
3 0 0 0 1 1
4 0 0 0 0 0
5 0 0 0 0 0

我重新安排它与...

x <- array(NA, c(length(infrastructure[1,]),length(infrastructure[,1]),3)) 
x[,,1] <- infrastructure
x[,,2] <- information
x[,,3] <- problems

nl <- netlm(projects,x,reps=100)

当我执行“netlm”命令时,会出现下一条消息:

“netlm(projects, x, reps = 100) 中的错误:netlm 中需要同构图顺序。”

我该如何解决?谢谢

4

2 回答 2

1

这里的问题是 netlm 需要一个列表而不是一个数组,所以我认为它不会将条目作为单独的网络读取。错误也表明了这一点。它没有看到三个 5x5 矩阵。改为使用list()

nets <- rgraph(5,4)
y <- nets[1,,]
info <- nets[2,,]
infra <- nets[3,,]
prob <- nets[4,,]

现在,您可以list()netlm()命令本身中使用(节省一步):

nl <- netlm(y,list(info,infra,prob),reps=100)

或者您可以将列表创建为对象并以这种方式使用它:

x <- list(info,infra,prob)
nl <- netlm(y,x,reps=100)

由于您已经拥有三个独立的网络,您可以这样做:

nl <- netlm(projects,list(problems, information, infrastructure),reps=100)
于 2016-10-12T14:38:03.650 回答
0

我在定义数组时犯了一个错误,我应该编写以下代码:array(NA,c(3,length(infrastructure[1,]),length(infrastructure[,1])))

于 2016-04-08T12:50:15.280 回答