使用"返回"在函数中或通过"<< - "定义全局变量哪一个?在R

时间:2015-06-18 08:26:02

标签: r

在函数中使用全局变量而不是return是否合适?如果没有,为什么?

mysum <- function(a, b) {
    c <<- a + b
}

mysum <- function(a, b){
    c <- a + b
    return(c)
}

1 个答案:

答案 0 :(得分:1)

使用像您在第一个替代方案中所做的全局变量在编程圈中被称为“副作用”(请参阅​​讨论的一些链接的注释)。令人不悦的是,一个令人信服的理由是,它使您很难单独理解您的程序,并且很难在其他地方重用该代码。

第二种方法当然是首选方法,也就是“返回”语句的重点。人们倾向于首选的主要原因之一是,在另一方面,似乎很难返回多个值。然而,这可以通过各种方式实现,也许最简单的方法是使用如下列表:

mysumdiff <- function(a,b){

  rv <- list(sum=a+b,diff=a-b)
  return(rv)
}

msd <- mysumdiff(3,4)

print(sprintf("sum: %d diff:%d",msd$sum,msd$diff))