【发布时间】:2023-04-03 17:57:02
【问题描述】:
假设我想通过列的所有因子值对数据框中的列子集应用简单的分位数回归。
以 mtcars 为例。
data(mtcars)
cols <- c("mpg", "disp", "hp", "drat")
mtcars$cyl <- as.factor(mtcars$cyl)
这里我们将cyl 作为因子,取值为 4、6 或 8。
现在假设我想在cyl == 4, 6 and 8 时对cols 中的每一列应用分位数回归。我想将结果存储在列表列表中:
store <- rep(list(list()), length(cols))
所以store 将有 4 个元素,每个元素对应于cols 中的一列。再往下一层,列表有 3 个元素,每个元素对应 cyl。再往下走,每个元素都包含分位数回归的结果。
在 R 中执行此操作的最佳方法是什么?我尝试使用嵌套的for 循环来解决这个问题,但如果可能的话,我更愿意避免这种情况。
编辑:
这是我的工作解决方案,但如果有更简单的方法不涉及使用reverseList()
store <- plyr:::dlply(mtcars, "cyl", function(d) {
lapply(d[, cols], quantile, seq(0,1,0.2))
})
store <- paleotree:::reverseList(store)
【问题讨论】:
标签: r dplyr tidyverse data-wrangling quantile-regression