Я хочу назначить и сохранить новое значение для каждой итерации в цикле for - PullRequest
0 голосов
/ 27 марта 2019

Я хочу назначить и сохранить новое значение в среде R для каждой итерации цикла for, как указано в заголовке.

csg<-clusters(suba)

csgs1<-subgraph(suba, csg$membership==1)

sg1<-cluster_spinglass(csgs, weights=E(a)$weight)

Итак, учитывая некоторый объект igraph (suba), я хочу создать sg1, sg2, ..., sg31.Я не хочу проходить через 2 строки кода выше 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, чтобы я мог использовать их в качестве групп для своей сетевой субы.Поскольку мой код прямо не работает, я не получаю результатов в данный момент.Это работает индивидуально, создавая подграф для csgs1 и список для sg1.

Ответы [ 2 ]

1 голос
/ 27 марта 2019

Если вы действительно хотите создать несколько переменных, то вы можете сделать это следующим образом:

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 и т. Д., Чтобы вы могли использовать их непосредственно позже в своем коде.

Надеюсь, это поможет.

0 голосов
/ 27 марта 2019

Лучше, если вы сохраняете вещи в виде списка, а не заполняете свою среду несколькими объектами.

Однако вы можете использовать assign, чтобы создать новый объект и присвоить значение, например:

assign("a", 10) #Create an object "a" and assign value 10
a
[1] 10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...