Для моего удобства я хочу написать функцию, которая добавляет линейный график и точечный график к уже существующему графику.Я определил:
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()
.Выше не работает, потому что по какой-то причине нельзя добавить эти два geoms.Следующий пример иллюстрирует проблему.
Затем я попытался:
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 и получить разные определения функций для каждого.Есть ли способ сделать это в той же функции?
Спасибо!