Для моего удобства я хочу написать функцию, которая добавляет линейный график и график рассеяния к уже существующему графику. Я определил:
addlinetoplot <- function(dataset, varx, vary)
{
p <- geom_line(data=dataset, aes_string(x=varx, y=vary)) +
geom_point(data=dataset, aes_string(x=varx, y=vary))
p
}
Вышеупомянутая функция не работает. Это сработает, если я уберу знак +
и часть geom_point ()
. Вышеупомянутое не работает, потому что по какой-то причине нельзя добавить эти две геометрии. Следующий пример иллюстрирует проблему.
Затем я попытался:
df1 <- data.frame(c1 = c(1:10), c2 = c(1:10))
c1 <- c(1:10)
csq <- c1^2
df2 <- data.frame(c1 = c(1:10), csq)
pltbase <- ggplot() + geom_line(df1, aes(x="c1", y="c2"))
# This does not work.
pltbase + addlinetoplot(dataset=df2, varx = "c1", vary = "csq")
Я решил, что проблема в утверждении:
addthistotheplot <- geom_line(data=df2, aes_string(x="c1", y="csq")) +
geom_point(data=df2, aes_string(x="c1", y="csq"))
Попытка определить приведенный выше оператор вызывает ошибку: нечисловой аргумент двоичного оператора.
Как я могу определить функцию addlinetoplot ()
, чтобы я мог заставить:
pltbase + addlinetoplot(dataset=df2, varx = "c1", vary = "csq")
работать. Один из способов - разделить geom_line и geom_point и задать для каждой разные функции. Есть ли способ сделать это в той же функции?
Спасибо!