扩展sapply以应用变量列表并将输出保存为R中的数据帧列表

扩展sapply以应用变量列表并将输出保存为R中的数据帧列表,r,lapply,sapply,R,Lapply,Sapply,我有一个类似于下面示例的数据集,复杂的示例数据。感谢SO用户IRTFM,我能够调整代码并将结果(我只对总比例感兴趣,而不是置信区间)保存为一个重塑对象,以便进一步处理。我想做的是扩展这个sappy,为其他20个变量生成结果。理想情况下,我希望将结果保存为列表中的数据帧,因为我认为这是最有效的方法。我的难题是如何扩展sapply,以便能够同时处理多个变量。我考虑过在保存变量名称的列表上进行for循环,并开始制作这个列表,下面是var_列表,但这似乎不是前进的方向。我宁愿利用apply族,因为我希望

我有一个类似于下面示例的数据集,复杂的示例数据。感谢SO用户IRTFM,我能够调整代码并将结果(我只对总比例感兴趣,而不是置信区间)保存为一个重塑对象,以便进一步处理。我想做的是扩展这个sappy,为其他20个变量生成结果。理想情况下,我希望将结果保存为列表中的数据帧,因为我认为这是最有效的方法。我的难题是如何扩展sapply,以便能够同时处理多个变量。我考虑过在保存变量名称的列表上进行for循环,并开始制作这个列表,下面是var_列表,但这似乎不是前进的方向。我宁愿利用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)
library(survey)#使用示例中标准的'dclus1'对象。
图书馆(重塑)
图书馆(tidyverse)
数据(api)
stype\u t%restrape::melt()%%>%dplyr::mutate(值=圆形(值,数字=4)*100)
假设您想使用可变奖励重复上述内容。你可以复制这些行,这样做,但最好是更高效。因此,我首先在这个示例数据中列出了两个变量的名称,但如何将这个列表应用到上面的代码中,并将结果保留在数据帧列表中,这让我感到困惑。我试着用一个圈布包住这个蓝宝石,但没有成功,因为我打赌这是错误的。如有任何建议或想法,将不胜感激

var_list <- list("stype", "awards")

<代码> ValueList

代替引用代码> $>代码>引用命名元素,请考虑<代码> [[//COD>提取器,用字符串引用名称],也可扩展<代码>替代< /代码>动态变量:

#定义的方法
df_构建%
重塑::熔化()%>%
dplyr::mutate(值=四舍五入(值,数字=4)*100)
}
#遍历字符向量并调用方法

ValueList而不是<代码> $>代码>引用命名元素,请考虑<代码> [[< /代码>提取器,用字符串引用名称]。此外,扩展<代码>替代< /代码>动态变量:

#定义的方法
df_构建%
重塑::熔化()%>%
dplyr::mutate(值=四舍五入(值,数字=4)*100)
}
#遍历字符向量并调用方法

var_list感谢您的回答,它很有效。我不知道[[extractor.很高兴提供帮助。是的,extractor是向量、矩阵、列表、数据帧等的一种有用的核心方法。通常用户在
$
之前学习它。节日快乐,@Maggie,快乐编码!感谢您的回答,它很有效。我不知道[[提取器。很高兴提供帮助。是的,提取器是向量、矩阵、列表、数据帧等的一种有用的核心方法。用户通常在
$
之前学习它。节日快乐,@Maggie,快乐编码!