Измерить ассортативность списка сетей в igraph?

#r #i&raph

#r #i&raph

Вопрос:

Я хотел бы измерить ассортативность списка сетей. Вот как я сгенерировал список.

 nodes <- data.frame("Nodes" = 1:22,
                    "Type" = c(rep(1, 18), rep(0, 4)) # for measurin& assortativity

set.seed(1)
nwl <- list()
for (x in seq_len(1000L)) {
    Start = 22, 500, replace=TRUE)
    End   = 22, 500, replace=TRUE)
    df = data.frame(Start, End)
    nwl[[x]]= &raph_from_data_frame(df, 
                                    vertices = nodes,
                                    directed=TRUE)
}
  

Я хотел бы применить что-то подобное assortativity(network, V(network)$Type, directed =T) в sapply() функции для моего списка.

Я пробовал sapply(nwl, V(nwl)$Type, directed =T) , sapply(nwl, sapply(nwl, V)$Type, directed = T) и sapply(nwl, sapply(nwl, V, $Type), directed = T) .

Если есть лучший способ сделать это без sapply , я буду благодарен и за это.

Ответ №1:

Если я вас правильно понял, вы хотели бы просмотреть список сетей nwl и применить assortativity -функцию. В базе R этого можно достичь следующим образом:

sapply(nwl, function(network) assortativity(network, V(network)$Type, directed =T))

Здесь я передаю анонимную функцию в, sapply которая строится вокруг assortativity . Более интуитивный способ и более близкий к вашему подходу, это использовать map из purrr пакета:

purrr::map_dbl(nwl, ~ assortativity(.x, V(.x)$Type, directed = T))

Это позволяет вам напрямую вставлять .x в качестве заполнителя для сети (указанной в аргументе nwl ). Я бы не знал, как это можно сделать, используя базу R.

Результат должен быть эквивалентным независимо.

Комментарии:

1. Большое вам спасибо! Я использую purrr предоставленное вами пакетное решение.