【问题标题】:How to define 'local' variables in R?如何在 R 中定义“局部”变量?
【发布时间】:2020-08-29 20:25:43
【问题描述】:

例如,在 for 循环中,我想定义一些变量来做一些操作,但我希望它们在迭代结束后自动删除。

但是,如果我使用 <- 为变量赋值,即使在循环执行结束后,变量仍然存在,我必须手动删除它,这很烦人。

【问题讨论】:

  • 函数内的任何东西都是本地的,所以最好使用函数而不是循环,或者使用local?
  • @NelsonGon 据我所知,R 没有像 local 这样的语法,就像 python 一样(我刚刚尝试在 for 循环中定义变量时使用该前缀,但它没有工作)
  • 我很少用 R 写显式循环,你能补充一些例子吗?请参阅these 替代方案。
  • 这使用local,但随后一切都是local: number <- 1:5; res <- numeric(5); local(for(i in number){ print(res[i] + 2) })
  • @NelsonGon 哦,我不知道人们可以像接受的答案那样从 for 循环中获得。

标签: r variables scope local


【解决方案1】:

这个答案说明了在 R 的循环中使用local

    number <- 1:5
    res <- numeric(5)
    local(for(i in number){
 res2 <-res[i] + 42
  print(res2)
 })
[1] 42
[1] 42
[1] 42
[1] 42
[1] 42

与以下不同的是,上面不会在.GlobalEnv 中创建res2

 for(i in number){
  res2 <-res[i] + 42
  print(res2)
 }

或者,您可以避免循环并使用*apply 和/或使用设计时使用局部变量的函数。见例子here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 2012-06-09
    • 1970-01-01
    • 2019-10-01
    相关资源
    最近更新 更多