假设我想通过列的所有因子值将简单的分位数回归应用于数据框中的列子集。
以 mtcars 为例。
data(mtcars)
cols <- c("mpg", "disp", "hp", "drat")
mtcars$cyl <- as.factor(mtcars$cyl)
这里我们cyl
取值为 4、6 或 8 的因子。
cols
现在假设我想对when中的每一列应用分位数回归cyl == 4, 6 and 8
。我想将结果存储在列表列表中:
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)