R dplyr - Как я могу расфиксировать ввод, чтобы он оценивался, а не заключался в кавычки - в частности, ggplotordin_cart () - PullRequest
0 голосов
/ 27 октября 2018
library(tidyverse)
df <- tibble(
  date = as.Date(41000:41050, origin = "1899-12-30"), 
  value = c(rnorm(25, 5), rnorm(26, 10))
  )

Сначала я создаю свои данные выше. Затем я пытаюсь создать функцию, которая, помимо прочего, меняет масштаб координат ggplot.

scatter_plot_cart <- function(data, x, y) {
  x <- enquo(x)
  y <- enquo(y)
  ggplot(data, aes(!!x, !!y)) + 
    geom_point() + 
    coord_cartesian(xlim = c(min(data$(!!x)) + 100, max(data$(!!x)) - 100))
}

scatter_plot_cart(df, date, value)

Ошибка: неожиданная '(' in: "geom_point () +ordin_cartesian (xlim = c (min (data $ (">} Ошибка: неожиданное '}' в"} "

Я догадываюсь по ошибке, что не правильно цитирую x в моем синтаксисе coord_cartesian(). Какой правильный синтаксис? Я знаю, что почти там, потому что мой код ниже работает.

ggplot(df, aes(date, value)) + 
  geom_point() + 
  coord_cartesian(xlim = c(min(df$date) + 100, max(df$date) - 100))

1 Ответ

0 голосов
/ 27 октября 2018

Я бы заранее рассчитал пределы оси заранее

scatter_plot_cart <- function(data, x, y) {
    x <- enquo(x)
    y <- enquo(y)
    xlim <- c(
        data %>% pull(!!x) %>% min() + 100,
        data %>% pull(!!x) %>% max() - 100)
    ggplot(data, aes(!!x, !!y)) +
        geom_point() +
        coord_cartesian(xlim = xlim)
}

scatter_plot_cart(df, date, value)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...