我最近在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
之类的事情时,我才会期待这种行为。
为什么会发生这种情况?
答案 0 :(得分:6)
这是记录在案的行为。
请参阅R语言定义Section 4.3.3:
值得注意的是
foo(x <- y)
如果论证的效果 被评估的是改变调用环境中x
的值 而不是foo
的评估环境。
在您的示例中,调用环境是全局环境。