函数内的变量赋值

时间:2018-01-29 11:04:13

标签: r variable-assignment

我最近在R语言中发现了一个怪癖,我不确定这是故意还是错误。

以下是一个例子:

 import os

 os.system('start path_to_downloaded_exe_file /s')

我不明白的是,在# Simple print function print.func <- function(n) {print(n)} # Test it out print.func(1:10) [1] 1 2 3 4 5 6 7 8 9 10 # However, if we wrap an assignment into the function print.func(a <- 1:10) 内,所有作业都应限于本地功能环境,但在这种情况下,print.func会在全局环境中分配。

只有当我们做a之类的事情时,我才会期待这种行为。

为什么会发生这种情况?

1 个答案:

答案 0 :(得分:6)

这是记录在案的行为。

请参阅R语言定义Section 4.3.3

  

值得注意的是foo(x <- y)如果论证的效果   被评估的是改变调用环境中x的值   而不是foo的评估环境。

在您的示例中,调用环境是全局环境。