【问题标题】:Convert data.table to data.frame (i.e. undo setDT)将 data.table 转换为 data.frame(即撤消 setDT)
【发布时间】:2016-08-08 20:46:56
【问题描述】:

我有一个 20x2 的数据框。我将该数据框转换为 data.table 以执行一些操作(删除了对操作和目标的说明超出范围)。转换使我避免使用 for 循环。但是转换会产生一些问题。

我需要将 df data.table 转换回 data.frame。我怎样才能做到这一点?

非常感谢您的帮助。

df <- data.frame(LastPrice = c( 1221, 1220, 1220, 1217, 1216,  1218 , 1216, 1216, 1217, 1220, 1219, 1218, 1220, 1216, 1217, 1218, 1218, 1207, 1206, 1205), KCT = c( 1218, 1218, 1219, 1218, 1221,  1217 , 1217, 1216, 1219, 1216, 1217, 1216, 1219, 1217, 1218, 1217, 1217, 1217, 1219, 1217))

library(data.table)
setDT(df)
df[, check := as.integer(LastPrice > KCT)]
df[, Signal := do.call(pmin, shift(check, 0:2, type="lead"))]

【问题讨论】:

  • 就像setDT(),还有setDF()
  • 欧瑞卡。花了半天调试这个东西,终于发现data.table格式是我的问题。这解决了它。谢谢你。您想将此作为回复,以便我可以将问题标记为已回答吗?或者这个问题太简单了,应该删除......
  • @Hadd 这个? stackoverflow.com/q/25020092 虽然它还没有 setDF 答案
  • 没有问题太基础了,应该删掉。

标签: r dataframe data.table


【解决方案1】:

就像setDT()通过引用将其输入转换为数据表一样,还有setDF()通过引用将其输入转换为数据框。所以只需调用

setDF(df)

你又回到了一个没有复制的数据框。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-07
    • 2021-12-31
    • 2018-04-08
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 2020-01-05
    相关资源
    最近更新 更多