【发布时间】:2018-10-22 18:09:36
【问题描述】:
这是一个很奇怪的问题,其他用户让这段代码运行流畅。但这对我不起作用。我不明白,也许是软件包版本的问题。我正在运行 R 3.4.4、tidyverse 1.2.1 和 rlang 0.2.0
代码如下:
library(tidyverse)
Q <- as_tibble(data.frame(series = rep(c("diax","diay"),3),
value = c(3.25,3.30,3.31,3.36,3.38,3.42),
year = c(2018,2018,2019,2019,2020,2020))) %>%
select(year, series, value) %>% spread(key = "series", value = "value") %>%
rename(`2018-01-01` = diax, `2017-01-01` = diay)
nomes <- c("2018-01-01","2017-01-01")
ggplot(Q, aes(x = year)) +
geom_line(aes(y = !!as.name(nomes[1])), col = "red", size = 2, linetype = "dotdash") +
geom_line(aes(y = !!as.name(nomes[2])), col = "orange", size = 2, linetype = "dashed")
或者,它也应该以这种方式工作:
library(rlang)
library(tidyverse)
Q <- as_tibble(data.frame(series = rep(c("diax","diay"),3),
value = c(3.25,3.30,3.31,3.36,3.38,3.42),
year = c(2018,2018,2019,2019,2020,2020))) %>%
select(year, series, value) %>% spread(key = "series", value = "value") %>%
rename(`2018-01-01` = diax, `2017-01-01` = diay)
nomes <- c("2018-01-01","2017-01-01")
ggplot(Q, aes(x = year)) +
geom_line(aes(y = !!as.name(nomes[1])), col = "red", size = 2, linetype = "dotdash") +
geom_line(aes(y = !!as.name(nomes[2])), col = "orange", size = 2, linetype = "dashed")
ggplot(Q, aes(x = year)) +
geom_line(aes(y = !!rlang::sym(nomes[1])), col = "red", size = 2, linetype = "dotdash") +
geom_line(aes(y = !!rlang::sym(nomes[2])), col = "orange", size = 2, linetype = "dashed")
问题是我不断收到以下错误消息:
Error in !as.name(nomes[1]) : invalid argument type
Error in !rlang::sym(nomes[1]) : invalid argument type
【问题讨论】:
-
它正在开发版本中工作,请参见此处:github.com/tidyverse/ggplot2/blob/master/NEWS.md
-
确认它适用于我最新的开发版本
-
感谢克劳斯威尔克,我觉得这很奇怪,因为有几个人报告说它运行良好。干杯