r语言 - 应用 ':=' 后不明显返回数据表。



给定一个函数

testf <- function(dt){
dt[, t := seq(1:nrow(dt))]
return(dt)
}

和 data.table:

dt <- data.table(a=1, b=2)

当在此 data.table 上应用函数并且不将输出分配给变量时,由于某种原因我不明白没有生成可见的输出。

testf(dt)
#nothing

Hoewever,当采用相同的功能但在它之前使用打印功能时:

testf <- function(dt){
dt[, t := seq(1:nrow(dt))]
print(dt)
return(dt)
}
testd(dt)
a b t
1: 1 2 1
a b t
1: 1 2 1

然而,当将输出分配给变量时,输出实际上存储在该变量中,无论是否在函数中调用 print(( 函数:

t <- testf(dt)
View(t)
#Output visible

谁能解释一下这里出了什么问题?

我们需要在赋值后指定[]

testf <- function(dt){
dt[, t := seq(1:nrow(dt))][]
}
testf(dt)
#  a b t
#1: 1 2 1

最新更新