0
我在R原型中創建一個應用程序。我使用並行庫和parApply在數據框的列上運行函數。我知道這也適用於非並行/應用程序的應用程序。我具有類似於行:以R編程解包列表
myBigList <- parApply(myCluster, myInputData, 2, myFunction)
其中myFunction是我寫一個,需要一個向量作爲輸入。該函數本身執行了很多操作,我不能進去。它返回各種類別的變量列表。對於MWE的目的,說:
myFunction <- function(vectorIn){
# CODE GOES HERE
return(list(
mean = mean(vectorIn),
sd = mean(vectorIn),
vectorOut = sumUserFunction(vectorIn),
plot1 = aPlotGeneratingFunction(vectorIn),
))
什麼返回到我是一個包含從函數結果列表。我可以解決列表中的元素,例如:
myBigList$Column1$mean
但是這對我的目的不是很有幫助。我想知道如何解開列表,以便查看所有的平均值。例如:
listOfMeans <- myBigList$*ALL_ITEMS*$mean
因此listOfMeans是一個帶有row.names的向量,或者是帶有col.names的data.frame。
這可能嗎?我可以考慮使用for循環的解決方案,但看起來不太優雅。
我還想做一些類似於我返回的地塊的東西,以便我可以自動構建包含所有這些地塊的pdf。我猜想,學習上述將會有所幫助。
tl; dr:從列表中提取常用數據名稱的最佳方法是什麼?
編輯:實際的MWE
library('ggplot2')
exampleData <- data.frame(Col1 = rnorm(100), Col2 = rnorm(100), Col3 = rnorm(100))
myFunction <- function(xIn){
meanX <- mean(xIn)
sdX <- sd(xIn)
vecX <- xIn^2 + xIn
plotX <-
ggplot(data.frame(xIn, vecX), aes(x = xIn, y = vecX)) +
geom_point()
return(list(
mean = meanX,
sd = sdX,
vect = vecX,
plot = plotX
))
}
myBigList <- apply(exampleData,
2,
myFunction)
嘗試'mymeans < - sapply(myBigList,\'[[\', 「指」)'其中 「的意思是」 是要抽取的每個子列表中元素的名稱 –
謝謝, 對於具有單個值的列表中的項目,將返回具有適當名稱的向量。正是我想要的。 對於我列表中的項目包含向量,這將返回一個向量列表,同樣非常可以接受。 但是對於列表中包含劇情句柄(可能不是正確的術語)的項目,它將返回一個矩陣。我似乎無法弄清楚如何從這個地方再現這些情節。 – Lespied
這就是爲什麼你應該提供一個最小的可重複的例子。雖然您確實展示了一些代碼,但它不允許用戶實際測試/運行它。例如,你可以顯示一行如'x < - list(col1 = list(mean = 1,sd = 2),col2 = list(mean = 1,sd = 2),col3 = list(mean = 1, sd = 2))'或一個包括圖和data.frames。然後,有人會告訴你如何做到這一點 –