【发布时间】:2015-11-18 18:37:43
【问题描述】:
我有一个data.frame,这里是一个例子:
df <- data.frame(object = c("apples","tomatoes", "apples","pears" ),
Value = c(50,10,30,40))
我复制了这个 df 以将其保存为 data.frame 格式:
forDT <- df
我分配给 data.table 的新复制的 data.frame 执行数据拆分:
require(data.table)
tmp = setDT(forDT)[, list(grp=list(.SD)), by=.(object), .SDcols=names(forDT)]
setattr(import_split <- tmp$grp, 'names', paste(tmp$object, sep="."))
在接下来的步骤中,我需要未转换为 data.table 的原始 data.frame 以进行进一步计算(因为我更熟悉 data.frames,这就是我一开始制作副本的原因)。但是,原来的df 也是data.table 格式的。我做错了什么?想法?谢谢
【问题讨论】:
-
使用
as.data.table而不是setDT。使用setDT不会创建副本。 -
forDT <- df不会创建副本。使用 data.table 包中的copy()。或者使用 Ananda Mahto 提到的as.data.table()。还可以查看Reference Semantics 小插图。 -
data.table不还是data.frame吗?为什么要制作副本以保留它?
标签: r dataframe data.table