首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将参数传递给R中的函数

将参数传递给R中的函数
EN

Stack Overflow用户
提问于 2015-09-17 15:20:23
回答 1查看 44关注 0票数 0

案例1:

代码语言:javascript
复制
x <- 10
f <- function(x){
  x <- 20
  x}
f(x)
# [1] 20
x
# [1] 10

我对输出结果很满意。

案例2:

代码语言:javascript
复制
x <- 10
f <- function(x){
  x <<- 20
  x}
f(x)
# [1] 20
x
# [1] 20

我希望f(x)的输出是10而不是20,因为函数f应该返回x的局部值,即10。

案例3:

代码语言:javascript
复制
x <- 10
f <- function(x){
  x <<- 20
  x}
f(10)
# [1] 10
x
# [1] 20

在这种情况下,f(10)返回10,而不是像在情况2那样返回20。这是怎么回事?

EN

回答 1

Stack Overflow用户

发布于 2015-09-17 15:30:29

更新:

传递给R函数的参数似乎是对传递给它的值的引用。换句话说,如果传入的R函数外部的变量发生了变化,那么函数内部的局部变量也会发生变化。以下是您的案例2和案例3及其注释:

案例2:

代码语言:javascript
复制
x <- 10
f <- function(x) {
    x <<- 20        # global x is assigned to 20
    x               # therefore local x, which is a reference to
}                   # the x passed in, also changes
f(x)
# [1] 20
x
# [1] 20

案例3:

代码语言:javascript
复制
x <- 10
f <- function(x) {
    x <<- 20        # global x is assigned to 20
    x               # but local x, which references a temporary variable having
}                   # the value of 10, is NOT changed by the global
f(10)               # assignment operator
# [1] 10            # therefore the value 10 is returned
x
# [1] 20
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32624602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档