在 R 中以编程方式解包列表
Unpacking lists programmatically in R
我正在 R 中制作应用程序原型。我正在使用并行库和 parApply 运行 数据框列上的函数。我知道这也适用于 non-parallel/Apply 应用程序。我有一行类似于:
myBigList <- parApply(myCluster, myInputData, 2, myFunction)
其中 myFunction 是我编写的函数,它以向量作为输入。该函数本身执行了很多我无法进入的操作。它 return 是各种 类 变量的列表。为了 MWE 的目的,说:
myFunction <- function(vectorIn){
# CODE GOES HERE
return(list(
mean = mean(vectorIn),
sd = mean(vectorIn),
vectorOut = sumUserFunction(vectorIn),
plot1 = aPlotGeneratingFunction(vectorIn),
))
对我来说 return 是一个包含函数结果的列表。我可以处理列表中的元素,例如:
myBigList$Column1$mean
但这对我的目的没有多大帮助。我想知道如何解压缩列表,以便查看所有平均值。例如:
listOfMeans <- myBigList$*ALL_ITEMS*$mean
因此 listOfMeans 是具有 row.names 或 data.frame 且具有 col.names 的向量。
这可能吗?我可以想到一个使用 for 循环的解决方案,但这看起来不太优雅。
我也想做一些与我 return 的情节类似的事情,这样我就可以自动构建一个包含所有这些情节的 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)
来自@docendo discusimus
评论
mymeans <- sapply(myBigList, '[[', 'mean')
returns 是存储在 mean 中的所有值的向量。要 return 一个列表,这对存储绘图很有用 class 命令应该是:
myplots <- lapply(myBigList, '[[', 'plot')
我正在 R 中制作应用程序原型。我正在使用并行库和 parApply 运行 数据框列上的函数。我知道这也适用于 non-parallel/Apply 应用程序。我有一行类似于:
myBigList <- parApply(myCluster, myInputData, 2, myFunction)
其中 myFunction 是我编写的函数,它以向量作为输入。该函数本身执行了很多我无法进入的操作。它 return 是各种 类 变量的列表。为了 MWE 的目的,说:
myFunction <- function(vectorIn){
# CODE GOES HERE
return(list(
mean = mean(vectorIn),
sd = mean(vectorIn),
vectorOut = sumUserFunction(vectorIn),
plot1 = aPlotGeneratingFunction(vectorIn),
))
对我来说 return 是一个包含函数结果的列表。我可以处理列表中的元素,例如:
myBigList$Column1$mean
但这对我的目的没有多大帮助。我想知道如何解压缩列表,以便查看所有平均值。例如:
listOfMeans <- myBigList$*ALL_ITEMS*$mean
因此 listOfMeans 是具有 row.names 或 data.frame 且具有 col.names 的向量。
这可能吗?我可以想到一个使用 for 循环的解决方案,但这看起来不太优雅。
我也想做一些与我 return 的情节类似的事情,这样我就可以自动构建一个包含所有这些情节的 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)
来自@docendo discusimus
评论
mymeans <- sapply(myBigList, '[[', 'mean')
returns 是存储在 mean 中的所有值的向量。要 return 一个列表,这对存储绘图很有用 class 命令应该是:
myplots <- lapply(myBigList, '[[', 'plot')