R函数上的for循环

R函数上的for循环,r,R,我不熟悉R(通常是编程),不明白为什么以下代码位会产生不同的结果: x <- 100 for(i in 1:5){ x <- x + 1 print(x) } x解决问题 这是因为在函数中,左侧处理的是局部变量x,右侧处理的是全局变量x。您不是在更新函数中的全局x,而是将101的值分配给本地x。每次调用该函数时,都会发生相同的情况,因此您将本地x指定为1015次,然后打印5次 要帮助可视化: # this is the "global" scope x <- 100

我不熟悉R(通常是编程),不明白为什么以下代码位会产生不同的结果:

x <- 100

for(i in 1:5){
  x <- x + 1
  print(x)
}
x解决问题
这是因为在函数中,左侧处理的是局部变量
x
,右侧处理的是全局变量
x
。您不是在更新函数中的全局
x
,而是将
101
的值分配给本地
x
。每次调用该函数时,都会发生相同的情况,因此您将本地
x
指定为
101
5次,然后打印5次

要帮助可视化:

# this is the "global" scope
x <- 100

f <- function(){
  # Get the "global" x which has value 100,
  # add 1 to it, and store it in a new variable x.
  x <- x + 1
  # The new x has a value of 101
  print(x)
}
#这是“全局”范围

这就是你想要的:

f <- function(){
  x <<- x + 1
  print(x)
}

f现在它可能会解决您的问题,但请避免使用全局变量,并且不要对它们感到太舒服。对于小脚本,使用全局脚本可能没那么糟糕,但是小脚本变大了,然后这些东西真的会咬你。
y <- 100

f <- function(){
  x <- y + 1
  print(x)
}
f <- function(old.x) {
    new.x <- old.x + 1
    print(new.x)
    return(new.x)
}
x <- 100

f <- function(old.x) {
    new.x <- old.x + 1
    print(new.x)
    return(new.x)
}

for (i in 1:5) {
  x <- f(x)
}
f <- function(){
  x <<- x + 1
  print(x)
}
create.f <- function(x) {
  return(function() {
    x <<- x + 1
    print(x)
  })
}

f <- create.f(100)
for (i in 1:5) f()
## [1] 101
## [1] 102
## [1] 103
## [1] 104
## [1] 105