Использование строки в качестве аргумента функции r с сетями - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь написать функцию, которая применяет "последовательность операций к нескольким графам" в моей рабочей области, которую я идентифицирую с заданным суффиксом;

Допустим, name_g , однако я не могу сделать функцию для правильного распознавания строки. Я пробовал решения, предложенные в других сообщениях, но обычно я получаю сообщение об ошибке.

" Ошибка в .f (.x [[i]], ...): не является графическим объектом " при использовании замены и eval

library(igraph)
library(igraphdata)
library(purrr)

data(karate)
data(kite)
data(immuno)

karate_g <- karate
kite_g <- kite
immuno_g <- immuno

foo <- function(x){
 all_networks <- mget(ls(pattern = x))

 all_networks %>%
    map(cluster_fast_greedy) %>% 
    map(sizes) %>% 
    map(max)
}

foo("_g")

1 Ответ

0 голосов
/ 09 января 2019

Вы должны обратиться к правильной среде:

foo <- function(x){
    all_networks <- mget(ls(pattern = x, pos= 1L),  envir = as.environment(1L))

    all_networks %>%
       map(cluster_fast_greedy) %>% 
       map(sizes) %>% 
       map(max)
}

foo("_g")
# $immuno_g
# [1] 320

# $karate_g
# [1] 18

# $kite_g
# [1] 4
...