【发布时间】:2020-06-22 10:09:30
【问题描述】:
我创建了一个包含子列表的列表,每个子列表都包含我希望 R 执行的一项任务的信息。
df <- as.data.frame(matrix(1:6 , ncol =2 , nrow = 3))
colnames(df) <- c("Col1", "Col2")
myList <- list()
myList[["Dataset1"]] <- list()
myList[["Dataset1"]]["Function"] <- "mean"
myList[["Dataset1"]][["DataFrame"]] <- df
myList[["Dataset2"]] <- list()
myList[["Dataset2"]]["Function"] <- "lm"
myList[["Dataset2"]][["DataFrame"]] <- df*2
现在我希望 R 将函数应用于数据框并将结果存储在新列表中。我怎样才能做到最好?
到目前为止,我有两个想法:我要么使用 lapply 遍历列表,每次访问子列表中的几个项目,将其提供给新函数
myResult <- lapply(myList, FUN = myList[["Dataset1"]]["Function"](x) , x = as.matrix(myList[["Dataset1"]][["DataFrame"]]))
但我不知道如何告诉 R 如何正确循环遍历子列表。
其次,我希望能够将整个子列表发送到一个函数,但我也无法让它运行。
myFunction <- function(x){
TempData <- x[["DataFrame"]]
TempFunction <- x["Function"]
TempResult <- get(TempFunction)(TempData)
return(TempResult)
}
myResult <- lapply(myList, myFunction(x))
如果有人能告诉我如何解决这个 id,我会非常高兴。
提前非常感谢!
【问题讨论】:
-
如何将
mean函数应用于数据框?