r function movie

La función R no devuelve valores



function movie (3)

Para devolver df , simplemente escriba 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) }

o, incluso más simple en este caso, omita la última asignación:

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

Si la última expresión se evalúa como un objeto de resultado, como lo hace data.frame(..) , esto obtiene el objeto de retorno de la expresión que lo encierra y la declaración de return explícita puede omitirse.

editar: y eliminar los ticks anteriores antes de sep y después de cerrar el paréntesis

edit2: Por supuesto, el comentario de MrFlick es correcto: lo único que realmente está mal con su código son los ticks de retroceso que probablemente son simplemente un error tipográfico aquí en el sitio. Incluso la asignación produce el valor asignado como un objeto de resultado, pero es invisible. Por lo tanto, puede asignarlo, pero no se imprime automáticamente en la consola.

Estoy escribiendo mi primera función 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) }

Y entonces no pasa nada. Sospeche que tiene algo que ver con el retorno que se necesita. No estoy seguro de cómo escribiría esto.


Parece que acabas de tener algunos errores tipográficos.

Prueba esto y no olvides incluir tu biblioteca para ayudar a las personas cuando te respondan. :)

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


Simplemente necesita evaluar el objeto al final de su función para que devuelva un valor. Vea el ejemplo simple a continuación:

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

EDITAR:

Como señala @MrFlick, tanto funA como funB devuelven la evaluación de la última expresión, pero funA no imprimirá nada. Sin embargo, si asigna la salida de funA(1) un objeto, ese objeto producirá el valor 1 :

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

La moraleja de la historia es que debes asignar la salida de IMDBmovierating a un objeto o evaluar explícitamente df al final de la función.