【发布时间】:2019-04-10 10:07:03
【问题描述】:
我想为名为日期的向量中的每一列创建一个图。我的数据框只包含这些列,我想对其进行分组,计算出现次数,然后绘制它。
下面的代码有效,除了map,我想用它来遍历以前未知数量的列。我想我正确地使用了map,我之前已经成功了。我是使用 quosures 的新手,但鉴于我的函数调用有效,我不确定出了什么问题。我查看了其他几篇似乎以这种方式设置的帖子。
df <- data.frame(
date1 = c("2018-01-01","2018-01-01","2018-01-01","2018-01-02","2018-01-02","2018-01-02"),
date2 = c("2018-01-01","2018-01-01","2018-01-01","2018-01-02","2018-01-02","2018-01-02"),
stringsAsFactors = FALSE
)
dates<-names(df)
library(tidyverse)
dates.count<-function(.x){
group_by<-enquo(.x)
df %>% group_by(!!group_by) %>% summarise(count=n()) %>% ungroup() %>% ggplot() + geom_point(aes(y=count,x=!!group_by))
}
dates.count(date1)
map(dates,~dates.count(.x))
我收到此错误:grouped_df_impl(data, unname(vars), drop) 中的错误:列 .x 未知
【问题讨论】:
-
map(dates, dates.count)适合你吗? -
这确实产生了 2 个图,但它们不正确。 x 轴似乎是字符(或离散),只有列名称作为单轴分隔符,而不是轴上的日期。
-
什么时候转换为
Date对象?您可能希望在数据生成/修改中的某处包含%>% mutate_at(vars(date1, date2), funs(as.Date(.)))。 -
在我的真实代码和数据中,列是日期对象(日期是一个向量,仅由数据框中的日期对象的名称组成)。
标签: r ggplot2 dplyr purrr quosure