【问题标题】:Data.table objects turn into data.frame after calling fix()调用 fix() 后 Data.table 对象变成 data.frame
【发布时间】:2013-05-17 13:02:26
【问题描述】:

每次我在data.table 上运行命令fix(DT) 时,关闭修复窗口后,DT 就会变成data.frame 对象。这正常吗?

library(data.table)
DT <- data.table(a = 1:2, b = 2:3)

> class(DT)
[1] "data.table" "data.frame"

fix(DT) 

# close the window

> class(DT)
[1] "data.frame"

编辑:

一些会话信息:

R version 3.0.0 (2013-04-03)
Platform: x86_64-w64-mingw32/x64 (64-bit)

【问题讨论】:

  • 我觉得是正常的。 fixedit 是应用于数据帧而不是数据表的函数。因此,他们将获取 DT 的副本,对其进行修改,将其作为数据框返回,并用它替换原始 DT。
  • ... edit 没有 data.table 方法。因此,由于 data.table 也是 data.frame,因此使用了edit.data.frame。无论如何,使用 fix 处理 data.table 是没有意义的。通常,data.set 太大了。
  • 如果你不担心效率,你可以编写一个 edit.data.table 包装 utils:::edit.data.frame 的方法 ...
  • 好的,谢谢!我对此很满意。你们中的一些人可以重写他的评论作为答案吗?
  • @Roland 我知道。但是fix 当您单击与工作区选项卡中的 data.frame 不同的任何内容时,它会被 RStudio 调用。在将其提交给 RStudio 维护人员之前,我想确保纯 R 中的底层进程(fixedit)是正确的。

标签: r dataframe data.table


【解决方案1】:

fix 调用 edit。但是,edit 没有 data.table 方法(使用 methods(edit) 检查)。因为 data.table 也是一个 data.frame,所以使用 edit.data.frame 代替,它返回一个 data.frame 记录。

您可以编写自己的 edit.data.table,但我不建议这样做,因为 data.tables 通常太大而无法以合理的方式进行编辑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-12
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 2013-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多