1. Learn
  2. /
  3. 课程
  4. /
  5. R 中级

Connected

道练习

R 按值传递参数

题目标题其实已经点明了:R 按值传递参数。这是什么意思?简单说,就是 R 函数不会改变传入该函数的变量本身。看一个简单示例(请在控制台尝试):

triple <- function(x) {
  x <- 3*x
  x
}
a <- 5
triple(a)
a

在 triple() 函数内部,参数 x 被重写为其自身的 3 倍。随后返回这个新的 x。如果您用值为 5 的变量 a 调用该函数,会得到 15。但 a 的值变了吗?如果 R 是将 a 按引用传给 triple(),那么函数内部对 x 的覆盖会"传递"到函数外的变量 a。然而,R 是按值传递,因此传入函数的 R 对象不会改变,除非您进行显式赋值。即使调用了 triple(a),a 仍然等于 5。

对于下面这段代码,您能指出哪一个说法是错误的吗?

increment <- function(x, inc = 1) {
  x <- x + inc
  x
}
count <- 5
a <- increment(count, 2)
b <- increment(count)
count <- increment(count, 2)

说明

50 XP

答案选项