我想为for循环的每次迭代分配一个新值并将其存储到R环境中,如标题中所述。
csg<-clusters(suba)
csgs1<-subgraph(suba, csg$membership==1)
sg1<-cluster_spinglass(csgs, weights=E(a)$weight)
因此,给定一些igraph对象(suba),我想创建sg1,sg2,...,sg31。我不想经过31行以上的两行代码,所以我尝试了for循环?但是我不知道如何每次都存储一个新值。
for (k in 1:seq_along(length(csg$csize))){
csgs[k] <- subgraph(suba, csg$membership==k)
sg [k] <-cluster_spinglass(csgs[k] , weights=E(a)$weight)
}
很明显,在这种情况下,方括号不起作用,但是我找不到如何做到这一点。
理想情况下,我想将sg1,sg2等保存到R环境中,以便可以将它们用作网络suba的组。由于我的代码无法正常工作,因此目前无法获得结果。不过,它可以单独工作,为csgs1创建一个子图,为sg1创建一个列表。
答案 0 :(得分:1)
如果您确实想创建多个变量,则可以按照以下步骤进行操作:
for (k in seq_along(csg$csize)){
assign(paste0("csgs",k), subgraph(suba, csg$membership==1))
assign(paste0("sg",k), cluster_spinglass(get(paste0("csgs",k)), weights=E(a)$weight))
}
这将为您创建csgs1
,csgs2
,csgs3
等,以及sg1
,sg2
,sg3
等,因此您可以稍后在代码中直接使用它们。
希望有帮助。
答案 1 :(得分:0)
最好将内容存储为列表,而不是用多个对象充斥环境。
但是,您可以使用assign
创建一个新对象并分配一个值,例如:
assign("a", 10) #Create an object "a" and assign value 10
a
[1] 10