让我们定义一个修改R:
中数据表的函数TestFun <- function( dt.in ) {
dt <- copy( dt.in )
dt[ 1, a:=9 ]
return( dt )
}
让我们创建一个小测试表,并在其上运行该函数:
dt.test <- data.table( a = 1:3, b = 1:3 )
TestFun( dt.test )
此后有 no 返回值,鉴于我已明确指定要返回的内容,这已经很奇怪了,我甚至复制了数据表以避免与引用语义相关的问题。 / p>
但是这之后真的很奇怪。让我们存储结果:
a <- TestFun( dt.test )
快速str( a )
确认a
确实存储了(正确的)结果 - 似乎该函数无形地返回了它,但我不知道为什么......
但故事还没有结束!如果我尝试打印a
...
> a
>
......没有任何反应。但是如果我进入
> a
a b
1: 9 1
2: 2 2
3: 3 3
>
再次,打印表格!这几乎是深奥的:我只是输入a
两次,所以我所做的是完全相同,但它的行为是不同的!这里发生了什么......?