【发布时间】:2018-07-08 01:25:02
【问题描述】:
我最近在 R 语言中发现了一个怪癖,我不确定这是有意的还是错误的。
下面是一个例子:
# 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 是在全局环境中赋值的。
只有当我们执行print.func(a <<- 1:10) 之类的操作时,我才会期待这种行为。
任何想法为什么会发生这种情况?
【问题讨论】:
-
a <- print.func(1:10) -
赋值不在本地环境中,而是在函数调用之前,在全局环境中完成
-
@Cath 如果您有一些文档/材料来支持它,那将是一个很好的答案。至于为什么他的电话仍然打印数字,
a <- 1:10本身返回向量 1:10。
标签: r variable-assignment