Создание сюжетной функции в r - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь создать функцию построения графика для создания точечных графиков.Однако это не может работать.Я считаю, что проблемы с df [, y] и df [, x], но я не уверен, что не так.Пожалуйста помоги!

class<-c(1,2,3,4) 
level<-c(1,2,3,4) 
school<-c(2,3,4,5)
score<-c(5,6,7,8)
performance<-c(3,7,6,5)
dataframe = data.frame(class,level,school,score,performance)

plotScatter <- function(x, y, df) {
  plot(df[,y]~df[,x])
}

plotScatter(score, performance, dataframe)

1 Ответ

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

Проблема действительно возникает из-за того, что вы устанавливаете df в вашей функции plotScatter.Чтобы построить два столбца друг против друга, в df[,x] ожидается, что x будет строкой (и то же самое для df[,y]).

Вот два способа ее решения:

1) вызов функции с x и y в виде строк

plotScatter <- function(x, y, df) {
  plot(df[,y]~df[,x])
}
plotScatter('score', 'performance', dataframe)

2) использование deparse и substitute внутри функции для преобразования переменных в строки

plotScatter <- function(x, y, df) {
  x <- deparse(substitute(x))
  y <- deparse(substitute(y))
  plot(df[,y]~df[,x])
}
plotScatter(score, performance, dataframe)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...