【发布时间】:2020-12-25 21:42:25
【问题描述】:
我有一个类似于下面例子的数据集,复杂的样本数据。感谢 SO 用户 IRTFM,我能够调整代码并保存结果(我只对总比例感兴趣,而不是置信区间)作为重塑对象以供进一步处理。我想做的是扩展这个 sapply 以生成 20 个其他变量的结果。理想情况下,我想将结果保存为列表中的数据框,因为我认为这是最有效的方法。我的斗争是如何扩展 sapply 以便我可以一次处理多个变量。我考虑过一个包含变量名称的列表的 for 循环,并开始制作这个列表,下面是 var_list,但这似乎不是前进的方向。我宁愿利用 apply 系列,因为我希望将结果存储在列表中。
library(survey) # using the `dclus1` object that is standard in the examples.
library(reshape)
library(tidyverse)
data(api)
stype_t <- sapply( levels(dclus1$variables$stype),
function(x){
form <- as.formula( substitute( ~I(stype %in% x), list(x=x)))
z <- svyciprop(form, dclus1, method="me", df=degf(dclus1))
c( z, c(attr(z,"ci")) )} ) %>%
as.data.frame() %>% slice(1) %>% reshape::melt() %>% dplyr::mutate(value = round(value, digits = 4)*100)
假设您想使用变量奖励重复上述操作。您可以复制这些行并这样做,但效率更高会更好。因此,我首先列出了此示例数据中两个变量的名称列表,但对于如何将此列表应用于上面的代码并将结果保留在数据框列表中,我感到很困惑。我尝试用 lapply 包裹 sapply 但这不起作用,因为我打赌那是错误的。任何建议或想法将不胜感激。
var_list <- list("stype", "awards")
【问题讨论】: