создать функцию, которая генерирует графики из данных - PullRequest
0 голосов
/ 28 мая 2018

У меня есть данные с 8 переменными (x1, y1, x2, y2, x3, y3, x4, y4), и я должен сделать функцию, которая генерирует 4 графика x1vsy1, x2vsy2, x3vsy3 и x4vsy4.

Итак, я пытался сделать это один за другим, создавая новые данные с переменными и после создания графика.

minidata<-select(alldata,x1,y1)
ggplot(minidata,aes(x1,y1))+geom_point()+ggtitle("m VS n")

Это работает, но когда я пытаюсь вставить это в функцию

graph<-function(m,n){
 minidata<-select(alldata,m,n)
  ggplot(minidata,aes(x=m,y=n))+geom_point()+ggtitle("m VS n")
}
graph(y1,x1)

Это не работает, говорит "Ошибка в FUN (X [[i]], ...): объект 'y1' не найден", что я мог сделать, чтобы сгенерировать функцию, которая создает 4 графика?

1 Ответ

0 голосов
/ 28 мая 2018

Есть несколько способов сделать это.Один из подходов:

minidata <- data.frame( x1 = 1:20,
                        y1 = rnorm(20), 
                        x2 = 1:20,
                        y2 = runif(20))


myGraph <- function( df, x, y ){

  mdf <- df[ ,c(x,y)]
  names(mdf) <- c("x","y")
  ggplot(mdf,aes(x=x,y=y))+geom_point() + ggtitle(paste(y,"~",x)) + labs (x =x, y = y)
}

# call function by passing names of the column using names() function
myGraph (minidata, names(minidata)[1], names(minidata)[2])

# or simply giving a name
myGraph (minidata, "x2", "y2")

enter image description here

...