函数R中的forloop问题

时间:2019-06-26 14:13:52

标签: r function for-loop

我对以下类型的函数有疑问:

fun.name <- function(x,y) {
    a<-x
    b<-y
    for (i in c(a, b)){
        i<-i+1
        print (i)
    }
    print(a)
    print(b)
}

fun.name(1, 2)

结果是

[1] 2
[1] 3
[1] 1
[1] 2

如果我不创建任何a和b,而仅保留x和y(fun.name <- function(x,y) { for (i in c(a, b))...),则将获得相同的结果。 我无法理解这种行为。 我想要的是一个向每个参数添加一个并打印结果的函数。在函数中定义循环时,为什么循环不修改变量a和b?我猜这是环境的问题,而且我还不了解函数参数的性质。 谢谢您的任何建议。

1 个答案:

答案 0 :(得分:2)

我实际上希望看到您当前的输出。这是格式化后的代码,带有注释的解释:

fun.name <- function(x,y) {
    a <- x
    b <- y
    for (i in c(a, b)) {   # i in (1, 2)
        # first iteration: i = 2, print 2
        # second iteration: i = 3, print 3
        i <- i+1
        print(i)
    }
    print(a)  # prints 1 (a was only assigned once)
    print(b)  # prints 2 (same reason as above)
}

fun.name(1, 2)

在函数中对ab进行初始分配后,它们没有任何变化。但是,即使发生了更改,变量ab甚至在功能范围之外甚至都不可见。