我写我的第一个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)
}
然后什么也没有发生。 怀疑它是与被需要的回报。 不知道我怎么会写这个。
我写我的第一个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:当然MrFlick的评论是正确的:唯一真正的问题与您的代码是反单引号,可能只是在这里一个错字在网站上。 即使是分配产生所分配的值作为结果对象,但它是不可见的。 因此,你可以指定它,但它不会自动打印在控制台上。
您只需要在你的函数结束时评价对象,因此它会返回一个值。 请参见下面的简单的例子:
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