首页 > 解决方案 > 不知道为什么这 2 段 R 代码给出不同的结果。使用 function() 和 for()

问题描述

testing <- c(20,40,60,80)
w1u50 = 0
w1o50 = 0
test_my_function <- function(y){
for(x in y){
  if(x < 50){
    w1u50 <- w1u50 +1
  }else{
  w1o50 <- w1o50 +1
  }
}
}
test_my_function(testing)
w1u50
w1o50

我试图让 w1u50 和 w1o50 返回 2 的结果,就像它们在下面的脚本中一样。相反,他们在上述脚本中返回 0 个计数。

testing <- c(20,40,60,80)
w1u50 = 0
w1o50 = 0

for(x in testing){
  if(x < 50){
    w1u50 <- w1u50 +1
  }else{
  w1o50 <- w1o50 +1
  }
}

w1u50
w1o50

标签: functionfor-loop

解决方案


我知道现在是什么问题。函数内部的变量是该函数的局部变量。为了在函数内部创建变量时解决这个问题,我需要使用 <<- 而不是 <-。


推荐阅读