r - 如何基于具有应用或 purrr 函数的自定义函数获取具有多行的数据框?
问题描述
我想得到一个带有变量名、均值和标准差的数据框。为此,我创建了descriptives
函数:
library(tidyverse)
library(labelled)
data <- read_spss("http://staff.bath.ac.uk/pssiw/stats2/SAQ.sav")
descriptives <- function(data, var) {
data %>%
select({{var}}) %>%
drop_na() %>%
summarize(Label = labelled::var_label({{var}}), Mean = mean({{var}}), `Std Dev` = sd({{var}}))
}
descriptives(data, Q01)
我尝试将此函数与所有变量映射,Q01:Q23
但出现此错误:Error in is_quosure(x) : argument "x" is missing, with no default
data %>%
select(Q01:Q23) %>%
map_dfr(descriptives(data))
解决方案
map
我们可以在将函数从{{}}
to更改为ensym
并评估后遍历名称!!
library(dplyr)
library(purrr)
library(haven)
library(labelled)
map_dfr(names(data), ~ descriptives(data, !!.x))
-输出
# A tibble: 23 x 3
Label Mean `Std Dev`
<chr> <dbl> <dbl>
1 Statiscs makes me cry 2.37 0.828
2 My friends will think I'm stupid for not being able to cope with SPSS 1.62 0.851
3 Standard deviations excite me 2.59 1.08
4 I dream that Pearson is attacking me with correlation coefficients 2.79 0.949
5 I don't understand statistics 2.72 0.965
6 I have little experience of computers 2.23 1.12
7 All computers hate me 2.92 1.10
8 I have never been good at mathematics 2.24 0.873
9 My friends are better at statistics than me 2.85 1.26
10 Computers are useful only for playing games 2.28 0.877
# … with 13 more rows
-使用的功能
descriptives <- function(data, var) {
var <- rlang::ensym(var)
data %>%
select(!! var) %>%
drop_na() %>%
summarize(Label = labelled::var_label(!!var),
Mean = mean(!!var), `Std Dev` = sd(!!var))
}
推荐阅读
- javascript - Node + create-react-app + Express - 如何将函数导入 Express
- c# - 无法将列表发送给邮递员
- python - ModuleNotFoundError - 在 Pycharm intellisense 中找到模块,但在执行程序时没有
- php - 如果按顺序排列,URL 参数不起作用接受
- c++ - 您将如何使此代码自我修改以保存所有输入的密码?
- spring - 数据库以前不知道时的弹簧数据
- visual-studio-code - Javascript 文件的 Visual Studio 代码大纲视图为空
- reporting-services - 使用 URL 生成报告生成没有数据的报告
- user-interface - E4:与来自多个异步调用的进度监视器同步缓存
- hybris - HYBRIS - Impex cronjob - 成功导入的日志行数