[英]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.