Функция R не возвращает значения

Долго читатель, первый раз спрашивающий. Запись первой функции R.

IMDBmovierating <- function(movie){ link <- paste("http://www.omdbapi.com/?t=", movie, "&y=&plot=short&r=json", `sep = "")` jsonData <- fromJSON(link) df <- data.frame(jsonData) } 

И тогда ничего не происходит. Подозреваю, что это связано с необходимостью возврата. Не знаю, как бы я это написал.

Чтобы вернуть df , просто напишите return(df) :

 IMDBmovierating <- function(movie){ link <- paste("http://www.omdbapi.com/?t=", movie, "&y=&plot=short&r=json", sep = "") jsonData <- fromJSON(link) df <- data.frame(jsonData) return(df) } 

или, еще проще в этом случае, опустить последнее назначение:

 IMDBmovierating <- function(movie){ link <- paste("http://www.omdbapi.com/?t=", movie, "&y=&plot=short&r=json", sep = "") jsonData <- fromJSON(link) data.frame(jsonData) } 

Если последнее выражение оценивает объект результата, как это data.frame(..) , тогда он получает возвращаемый объект охватывающего выражения, а явный оператор return может быть опущен.

отредактируйте: и удалите обратные тики перед sep и после закрытия круглой скобки

edit2: Конечно, комментарий г-на Фрика верен: единственное, что действительно неправильно с вашим кодом, - это обратные тики, которые, вероятно, просто опечатка здесь, на сайте. Даже присваивание создает назначенное значение в качестве объекта результата, но оно невидимо. Следовательно, вы можете назначить его, но он не будет автоматически распечатан на консоли.

Вам просто нужно оценить объект в конце вашей функции, чтобы он возвращал значение. См. Простой пример ниже:

 funA <- function(x) { a <- x } funB <- function(x) { b <- x b } funA(1) # prints nothing funB(1) # prints 'b' [1] 1 

РЕДАКТИРОВАТЬ:

Как указывает @MrFlick, оба funA и funB возвращают оценку последнего выражения, но funA ничего не печатает. Однако, если вы назначаете вывод объекта funA(1) , этот объект будет выдавать значение 1 :

 z <- funA(1) z [1] 1 z == funB(1) [1] TRUE 

Мораль этой истории состоит в том, что вам либо нужно назначить вывод IMDBmovierating для создания объекта, либо явно оценить df в конце функции.

Похоже, у вас всего несколько опечаток.

Попробуйте это и не забудьте включить свою библиотеку, чтобы помочь людям, отвечая на вас. 🙂

 library(RJSONIO) IMDBmovierating <- function(movie){ link <- paste("http://www.omdbapi.com/?t=", movie,"&y=&plot=short&r=json", sep = "") jsonData <- fromJSON(link) df <- data.frame(jsonData) } test <- IMDBmovierating(1984) test 
  • Могу ли я заставить функцию plpgsql возвращать целое число без использования переменной?
  • В чем разница между методом и функцией?
  • Как вы передаете указатель на функцию-член?
  • Должен объявить прототип функции в C?
  • Как вернуть 2 значения из метода Java?
  • jQuery's .click - передать параметры пользователю
  • Как передать все аргументы, переданные моему скрипту bash, в мою функцию?
  • Разница между методом и функцией в Scala
  • Как передать функцию в качестве параметра в C?
  • Что это за синтаксис определения странных функций в C?
  • Простые примеры обратного вызова classа C ++
  • Давайте будем гением компьютера.