【问题标题】:Does R have something similar to main function as in python, C?R 是否有类似于 python、C 中的 main 函数的东西?
【发布时间】:2015-08-27 18:15:06
【问题描述】:

我正在寻找一种更好的方式来组织我的 R 代码。理想情况下,我希望

  • 将所有辅助函数放在脚本末尾。它将帮助我专注于代码的主要部分,而不会被脚本开头的许多辅助函数分心。
  • 允许每个变量只存在于特定范围内。例如,如果我不小心为某些变量赋值,我不希望这些变量被晚于它们定义的函数拾取并弄得一团糟。

在 Python 中,这两个目标可以通过以下方式轻松实现:

def main():
...

def helper_func(x,y):
...

if __name__ == '__main__':
    main()

在 R 中有可能吗?如果不可能的话,有什么建议可以让它与此相似吗?

【问题讨论】:

  • 没有main。也许你应该把你的函数放在一个库中。
  • 为了记录,当然可以定义自定义函数(例如helpers <- function (x,y) {...})。
  • 如果您只想拥有一个脚本,R 就不会那样工作。你会想要构建一个包,加载包,然后拥有你的“主要”代码。
  • @cdeterman 您不必构建包 - 大多数情况下,采购 .R 文件就可以了。
  • @SeñorO 你是对的,你不必这样做,但如果/当你想添加更多功能而不是拥有一个大 source.R 或多个 source.R文件。这是我的主要观点。

标签: r


【解决方案1】:

对你的两点:

1) 由于脚本以命令行方式从上到下运行,因此您放在脚本底部的任何内容都不能用于在其上方运行的行。您可以将辅助功能放在不同的文件中,并将其放在“主”文件的顶部。

2) 在函数中所做的任何事情到最后都会被遗忘:

> a = 2
> f = function(x) x <- x + 2
> b = f(a)
> b
[1] 4
> a
[1] 2

或者,您可以指定要在任何地方使用的环境:

> CustomEnv = new.env()
> assign("a", 2, envir = CustomEnv)
> a = 3
> a
[1] 3
> get("a", CustomEnv)
[1] 2

更多详情请见?environment

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    • 2011-01-07
    相关资源
    最近更新 更多