【发布时间】:2018-08-06 23:34:31
【问题描述】:
对于下面的代码,我想将每个边的 (a*b) 存储在向量 op1 中,然后将所有向量存储在列表 opp1 中。根据给定的数据:我应该有 5 个向量 op1每个具有不同长度的向量(例如:length(op1[1]=3) 而其余长度为 2 的向量就像 length(op1[2]=2)),我将有一个列表 @987654328 @ 包含不同长度的向量。
将值存储在向量中是可以的,但我的问题是在存储这些向量时,结果列表包含向量但长度相同,即opp1list 由长度为 3 的所有op1 向量组成,所以有不知从何而来的奇怪价值。
library(igraph)
graph<-matrix(c(4,3,4,1,4,2,3,2,3,1),ncol=2,byrow=TRUE)
g<-graph.data.frame(d = graph, directed = FALSE)
v1<-c()
v2<-c()
n1<-list()
n2<-list()
op1<-c()
opp1<-list()
for (edge in 1:length(E(g))){
v1[edge] <- ends(graph = g, es = edge)[1]
v2[edge] <- ends(graph = g, es = edge)[2]
n1[[edge]] <- names(neighbors(g, v1[edge], mode = "all"))
n2[[edge]] <- names(neighbors(g, v2[edge], mode = "all"))
for (neighbor in 1:length(n2[[edge]])){
a<-as.numeric(v2[edge])
b<-as.numeric(n2[[edge]][neighbor])
c<-(a*b)
op1[neighbor]<-c
}
opp1[[edge]]<-op1
}
列表opp1是:
opp1
[[1]]
[1] 12 3 6
[[2]]
[1] 4 3 6
[[3]]
[1] 8 6 6
[[4]]
[1] 8 6 6
[[5]]
[1] 4 3 6
应该是这样的:
opp1
[[1]]
[1] 12 3 6
[[2]]
[1] 4 3
[[3]]
[1] 8 6
[[4]]
[1] 8 6
[[5]]
[1] 4 3
对于如何修复代码有什么建议吗,还有其他方法可以用不同的方式完成相同的工作,尤其是在处理大数据时可以节省时间和内存。 提前致谢。
【问题讨论】:
标签: arrays r list loops matrix