У меня есть список сетевых объектов igraph и функция, которую я хочу применить к каждой сети с различным набором аргументов функции для каждой сети.
Воспроизводимый пример:
# network
network <- graph(c("1","2","3","4"),directed = FALSE)
# making a list of graph objects
Converted <- list(network)
List <- rep(Converted,10)
# List with different parameters (Function arguments)
Xvalues <- 1:10
# function to add x nodes to the network
AddNode <- function(network,x){
for (i in 1:x){
network <- network + vertex(as.character(length(V(network)) + 1))
}
return(network)
}
Я хочу использовать функцию с i-м набором параметров в качестве аргументов функции для i-го элемента Списка сетей. Конечно, это работает с циклом for, но мне бы очень хотелось найти решение, использующее lapply, mapply, map или тому подобное, потому что это значительно упростило бы чтение и распараллеливание остальной части скрипта (функция в реальном скрипте намного более сложный и не включает цикл for).
Вот что я до сих пор безуспешно пробовал:
Lapply
ResultList <- lapply(List,AddNode,Xvalues)
Mapply
ResultList <- mapply(AddNode,List,Xvalues)
Карта
ResultList <- map(.x = List,.f=AddNode,x=Xvalues)
субоптимальное решение с использованием цикла for:
ResultList <- list(NA)
ResultList <- rep(ResultList,10)
for (i in Xvalues){
ResultList[[i]] <- map(.x = List[i],.f=AddNode, x = Xvalues[i])
}