#r #ggplot2
#r #ggplot2
Вопрос:
Я хочу обернуть следующие коды в виде функции
ez <- function(x,a) {
z<-x^3 1
return(z)
}
Q1 <- c(1,2,3,4,5)
ggplot(tibble(x = c(-10, 10)), aes(x))
map(1:length(Q1),
~stat_function(fun = ez, aes(color = paste0("sand ", .)), args=list(a = Q1[.])))
Эти коды создают несколько кривых, но они ПЕРЕКРЫВАЮТСЯ, и это не имеет значения.
Я хочу сгенерировать такую функцию, как эта
plot <- function(a) {
Q1 <- c(1,2,3,4,5)
ggplot(tibble(x = c(-6, 6)), aes(x))
map(1:length(Q1),
~stat_function(fun = ez, aes(color = paste0("sand ", .)), args=list(a = Q1[.])))
}
plot(2, 4, 3,6)
Комментарии:
1. В чем именно проблема? Насколько я понимаю, ваш код работает нормально и отображает несколько кривых. Однако ваша функция
ez
не использует параметрa
, чтобы он возвращал одинаковые значения для каждого Q или a или .. и кривые перекрываются.2. Да, коды работают отлично. Я хочу обернуть их в ФУНКЦИЮ
Ответ №1:
Возможно, это то, что вы ищете. Насколько я понимаю, вы хотите создать функцию, которой вы можете передавать вектор параметров и которая возвращает график кривых для выбранных параметров. С этой целью:
- Передайте значения параметров в виде вектора, т.Е. Поместите его в
c(...)
- В вашей функции plot просто выполните цикл
a
Примечание: я настроил функцию ez
так, чтобы она выдавала разные значения (и неперекрывающиеся кривые) в зависимости от a
ez <- function(x,a) {
z<-x^3 a^3
return(z)
}
library(ggplot2)
library(tibble)
library(purrr)
plot <- function(a) {
ggplot(tibble(x = c(-6, 6)), aes(x))
map(a,
~stat_function(fun = ez, aes(color = paste0("sand ", .)), args=list(a = .)))
}
plot(c(2, 4, 3, 6))