R函数上的for循环
我不熟悉R(通常是编程),不明白为什么以下代码位会产生不同的结果: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
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