R 如何根据列名选择矩阵列

R 如何根据列名选择矩阵列,r,matrix,igraph,R,Matrix,Igraph,我有一个表,其中包含通过以下方式获得的最短路径: g<-barabasi.game(200) geodesic.distr <- table(shortest.paths(g)) geodesic.distr # 0 1 2 3 4 5 6 7 # 117 298 3002 2478 3342 3624 800 28 g实际上你的方法有问题。测地.distr表的长度是随机的,您正在分配一个矩阵来存储基于单个运行的100个实现

我有一个表,其中包含通过以下方式获得的最短路径:

g<-barabasi.game(200)
geodesic.distr <- table(shortest.paths(g))
geodesic.distr
#   0    1    2    3    4    5    6    7 
# 117  298 3002 2478 3342 3624  800   28 

g实际上你的方法有问题。
测地.distr
表的长度是随机的,您正在分配一个矩阵来存储基于单个运行的100个实现。如果100次运行中的一次将为您提供更长的
测地线.distr
矢量,该怎么办?在这种情况下,我假设您希望使分配的矩阵更大。或者,更好的是,您希望首先运行100个实现,并在知道矩阵的大小后分配矩阵

另一个潜在的问题是,如果您使用
表(最短路径(bar))
,那么您(默认情况下)会考虑无向距离,最终会得到一个对称矩阵,并两次计算所有距离(自距离除外)。这可能不是你想要的

无论如何,这里有一个简单的方法,在100次运行后分配矩阵:

dists <- lapply(1:100, function(x) {
  bar <- barabasi.game(vcount(g))
  table(shortest.paths(bar))
})
maxlen <- max(sapply(dists, length))
geo <- t(sapply(dists, function(d) c(d, rep(0, maxlen-length(d)))))

dists请提供一个可复制的示例。谢谢,为了复制这段代码,你只需要制作一个新的图g,如:Game和你的问题来完成它。你的代码不工作,什么是种子。图
?我刚刚删除了它,它与讨论无关。。。谢谢你指出这一点。
for(i in seq(1:100)){
    bar <- barabasi.game(vcount(g))
    geodesic.distr <- table(shortest.paths(bar))
    distance <- unlist(labels(geodesic.distr))
    for(ii in distance){
        geo[i,ii]<-WHAT HERE?
    }
}
dists <- lapply(1:100, function(x) {
  bar <- barabasi.game(vcount(g))
  table(shortest.paths(bar))
})
maxlen <- max(sapply(dists, length))
geo <- t(sapply(dists, function(d) c(d, rep(0, maxlen-length(d)))))