在R中的函数中修改data.table然后返回它:奇怪的行为

时间:2017-07-22 15:56:33

标签: r data.table

让我们定义一个修改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两次,所以我所做的是完全相同,但它的行为是不同的!这里发生了什么......?

0 个答案:

没有答案