【发布时间】:2019-04-15 09:26:31
【问题描述】:
library(tidyverse)
set.seed(1)
graph.data <- tibble(cal.date = as.Date(40100:40129, origin = "1899-12-30"),
random_num = rnorm(30, 8, 5))
这是我们在这里使用的数据框。
# A tibble: 30 x 2
cal.date random_num
<date> <dbl>
1 2009-10-14 4.87
2 2009-10-15 8.92
3 2009-10-16 3.82
4 2009-10-17 16.0
5 2009-10-18 9.65
6 2009-10-19 3.90
7 2009-10-20 10.4
8 2009-10-21 11.7
9 2009-10-22 10.9
10 2009-10-23 6.47
# ... with 20 more rows
我正在尝试嵌套(sp?词法范围)两个函数,我称之为child_function 和parent_function。
child_function <- function(df, variable, hor.line = 6) {
variable <- enquo(variable)
df <- mutate(mutation = 2 * !!variable, horizontal.line = hor.line)
}
parent_function <- function(df, date, variable, hor.line = 6) {
date <- enquo(date)
variable <- enquo(variable)
hor.line <- enquo(hor.line)
df <- child_function(df, !!variable, !!hor.line) %>% print()
p <- ggplot(df, aes(date, mutation)) +
geom_point() +
geom_hline(aes(yintercept = !!hor.line))
p
}
当我用下面的行测试它时,我得到 "Error in !variable : invalid argument type"。
parent_function(graph.data, date = cal.date, variable = random_num, hor.line=8)
我想我没有使用正确的 dplyr tidyeval 语法。我的功能有什么问题?
【问题讨论】:
标签: r function dplyr nested tidyeval