簡體   English   中英

將函數應用於具有不同函數參數的網絡對象列表

[英]Apply function to a list of network objects with different function arguments

我有一個 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 循環)。

以下是我迄今為止未成功嘗試的內容:

拉普萊

ResultList <- lapply(List,AddNode,Xvalues)

映射

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])

}

您的Xvalues需要與您的列表長度相同,並且您需要在 mapply 中使用SIMPLIFY=F參數:

Xvalues <- 1:10
ResultList <- mapply(AddNode,List,Xvalues, SIMPLIFY=F)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM