Modifying object for use with summary_table() in R: "Error: `x` must be a formula"
Modifying object for use with summary_table() in R: "Error: `x` must be a formula"
我正在尝试使用概述的方法 here 创建一个 table 汇总统计数据,尽管我对其他方法持开放态度。
在此大纲中,他们建议创建要输入到 summary_table() 命令的摘要统计列表,如下所示:
our_summary1 <-
list("Miles Per Gallon" =
list("min" = ~ min(.data$mpg),
"max" = ~ max(.data$mpg),
"mean (sd)" = ~ qwraps2::mean_sd(.data$mpg)),
"Displacement" =
list("min" = ~ min(.data$disp),
"median" = ~ median(.data$disp),
"max" = ~ max(.data$disp),
"mean (sd)" = ~ qwraps2::mean_sd(.data$disp)),
"Weight (1000 lbs)" =
list("min" = ~ min(.data$wt),
"max" = ~ max(.data$wt),
"mean (sd)" = ~ qwraps2::mean_sd(.data$wt)),
"Forward Gears" =
list("Three" = ~ qwraps2::n_perc0(.data$gear == 3),
"Four" = ~ qwraps2::n_perc0(.data$gear == 4),
"Five" = ~ qwraps2::n_perc0(.data$gear == 5))
)
由于我的数据框中有 48 列(每个变量一列),我发帖询问是否有另一种方法可以创建上面列出的对象类型。基于 ,我创建了这样的摘要对象:
summarized <- df %>%
pivot_longer(cols = c(1:48)) %>%
group_by(name) %>%
summarize(lst = list(list(
mean = mean(value),
max = max(value),
min = min(value),
sd = sd(value))))
result <- deframe(summarized)
当我将它放入 summary_table() 函数时,该函数不会 运行。
table <- summary_table(df, summaries = result)
我收到以下错误消息。
Error: `x` must be a formula
您知道为什么 summary_table() 函数似乎无法处理我正在使用的对象吗?我认为我创建的对象与布局为 "our_summary1" 的对象相当。对于如何使它起作用的任何想法,我将不胜感激。
我查看了 and ,它们都是关于相同的错误消息,但它们没有回答我的问题,因为它们创建了对象以不同的方式输入 summary_table()方式比我做的。
这是一个创建表达式的选项,我们使用 map
遍历感兴趣的列名,创建一个字符串表达式,使用 sprintf
通过插入名称,然后 eval
用 parse_expr
解析后对表达式进行赋值。这将用于 summary_table
---
title: "new"
author: "akrun"
date: "5/3/2020"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
```{r sumtable, results='asis'}
library(qwraps2)
library(dplyr)
library(purrr)
options(qwraps2_markup = "markdown")
out <- map(c('mpg', 'disp', 'wt'), ~
eval(rlang::parse_expr(sprintf('list("min" = ~ min(.data$%s),
"max" = ~ max(.data$%s),
"mean (sd)" = ~ qwraps2::mean_sd(.data$%s))', .x, .x, .x))))
names(out) <- c("Miles Per Gallonv", "Displacement", "Weight (1000 lbs)" )
summary_table(mtcars, out)
```
-输出
我正在尝试使用概述的方法 here 创建一个 table 汇总统计数据,尽管我对其他方法持开放态度。
在此大纲中,他们建议创建要输入到 summary_table() 命令的摘要统计列表,如下所示:
our_summary1 <-
list("Miles Per Gallon" =
list("min" = ~ min(.data$mpg),
"max" = ~ max(.data$mpg),
"mean (sd)" = ~ qwraps2::mean_sd(.data$mpg)),
"Displacement" =
list("min" = ~ min(.data$disp),
"median" = ~ median(.data$disp),
"max" = ~ max(.data$disp),
"mean (sd)" = ~ qwraps2::mean_sd(.data$disp)),
"Weight (1000 lbs)" =
list("min" = ~ min(.data$wt),
"max" = ~ max(.data$wt),
"mean (sd)" = ~ qwraps2::mean_sd(.data$wt)),
"Forward Gears" =
list("Three" = ~ qwraps2::n_perc0(.data$gear == 3),
"Four" = ~ qwraps2::n_perc0(.data$gear == 4),
"Five" = ~ qwraps2::n_perc0(.data$gear == 5))
)
由于我的数据框中有 48 列(每个变量一列),我发帖询问是否有另一种方法可以创建上面列出的对象类型。基于
summarized <- df %>%
pivot_longer(cols = c(1:48)) %>%
group_by(name) %>%
summarize(lst = list(list(
mean = mean(value),
max = max(value),
min = min(value),
sd = sd(value))))
result <- deframe(summarized)
当我将它放入 summary_table() 函数时,该函数不会 运行。
table <- summary_table(df, summaries = result)
我收到以下错误消息。
Error: `x` must be a formula
您知道为什么 summary_table() 函数似乎无法处理我正在使用的对象吗?我认为我创建的对象与布局为 "our_summary1" 的对象相当。对于如何使它起作用的任何想法,我将不胜感激。
我查看了
这是一个创建表达式的选项,我们使用 map
遍历感兴趣的列名,创建一个字符串表达式,使用 sprintf
通过插入名称,然后 eval
用 parse_expr
解析后对表达式进行赋值。这将用于 summary_table
---
title: "new"
author: "akrun"
date: "5/3/2020"
output: html_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
```{r sumtable, results='asis'}
library(qwraps2)
library(dplyr)
library(purrr)
options(qwraps2_markup = "markdown")
out <- map(c('mpg', 'disp', 'wt'), ~
eval(rlang::parse_expr(sprintf('list("min" = ~ min(.data$%s),
"max" = ~ max(.data$%s),
"mean (sd)" = ~ qwraps2::mean_sd(.data$%s))', .x, .x, .x))))
names(out) <- c("Miles Per Gallonv", "Displacement", "Weight (1000 lbs)" )
summary_table(mtcars, out)
```
-输出