r - 应用 ':=' 后,Data.table 没有明显返回
问题描述
给定一个函数
testf <- function(dt){
dt[, t := seq(1:nrow(dt))]
return(dt)
}
和数据表:
dt <- data.table(a=1, b=2)
在此 data.table 上应用该函数并且未将输出分配给变量时,出于某种原因,我不明白没有生成可见的输出。
testf(dt)
#nothing
但是,当采用相同的功能但在它之前具有打印功能时:
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
推荐阅读
- python - PyTorch 的 BCEWithLogitsLoss 类究竟是如何实现的?
- javascript - 使用多个 Javascript 文件的最佳方法是什么?
- node.js - 使用 typescript 运行 node express 应用程序
- python - 对大型视频使用 TimeseriesGenerator 提取帧
- android - 无法解决:无法添加没有 YogaNode 的孩子
- reactjs - 反应钩子以获取响应标头
- javascript - 如何为 For...in 循环设置限制
- python - 为初学者使用“SCHEDULE”启动 Python 作业
- postgresql - 如何使用 pgAdmin for Postgresql 解决超时问题
- python-3.x - TypeError: add_tab() 接受 1 个位置参数,但给出了 2 个。(OneLineListItem)