我发现,当我尝试在控制台 a 中打印时data.table(例如,通过键入dt并按 Enter 键),它通常不会打印任何内容。所以我必须输入两到三遍(比如dt;dt;dt)然后它就会被打印出来。
没什么大不了的,但我很好奇为什么会发生这种情况?是我做的不对,还是data.table包装出了问题?
抱歉,我无法进行 reprex - 因为这种情况似乎并没有确定性地发生。但它经常发生在对 data.table 进行一系列的修改之后(ef dt[, a:=b+c][, aa:=2*a])
[]这是一个已知问题,可以通过在末尾添加额外内容来解决,例如dt[, a:=b+c][, aa:=2*a][]。
为什么在使用打印结果到控制台
DT后有时需要输入两次?:=
这是让#869工作的一个不幸的缺点。如果
:=在函数内部使用 a 且函数DT[]结束前没有 no ,则下次DT在提示符处键入时,将不会打印任何内容。重复DT将打印。为了避免这种情况:在函数的DT[]最后一个后面添加一个。:=如果这是不可能的(例如,它不是您可以更改的功能),则保证print(DT)在DT[]提示时打印。和以前一样,建议[]在查询末尾添加额外的内容来更新然后打印;:=例如>DT[,foo:=3L][]。