很多时候,我们会需要我们的函数做一些处理并返回结果。这可以通过R中的return()
函数来实现。
return()的语法
return(expression)
从函数返回的值可以是任何有效的对象。
示例:return()
我们来看一个例子,该例子将返回一个给定数字是正数、负数还是零。
check <- function(x) {
if (x > 0) {
result <- "Positive"
}
else if (x < 0) {
result <- "Negative"
}
else {
result <- "Zero"
}
return(result)
}
这里有一些示例运行。
> check(1) [1] "Positive" > check(-10) [1] "Negative" > check(0) [1] "Zero"
没有return()的函数
如果没有显式从函数返回,则R会自动返回最后一个已计算表达式的值。
例如,下面的函数与上面的函数等效。
check <- function(x) {
if (x > 0) {
result <- "Positive"
}
else if (x < 0) {
result <- "Negative"
}
else {
result <- "Zero"
}
result
}
我们通常使用显式的return()
函数立即从函数返回一个值。
如果它不是函数中的最后一个语句,它将过早地终止函数,并将控制权带回调用它的地方。
check <- function(x) {
if (x>0) {
return("Positive")
}
else if (x<0) {
return("Negative")
}
else {
return("Zero")
}
}
在上面的示例中,如果x > 0
,则函数会立即返回"Positive"
,而不会计算其主体中的其余部分。
多个返回值
return()
函数只能返回一个对象。如果我们想在R中返回多个值,我们可以使用列表(或其他对象)并返回它。
下面是一个例子。
multi_return <- function() {
my_list <- list("color" = "red", "size" = 20, "shape" = "round")
return(my_list)
}
在这里,我们创建一个包含多个元素的列表my_list
并返回这个单一的列表。
> a <- multi_return() > a$color [1] "red" > a$size [1] 20 > a$shape [1] "round"