gpt4 book ai didi

R data.table : how to go from tibble to data. 表返回?

转载 作者:行者123 更新时间:2023-12-04 10:47:43 27 4
gpt4 key购买 nike

我主要使用来自 tidyverse 的 tibble fromat 中的表格,但对于某些步骤,我使用 data.table包裹。我想看看将 data.table 转换回 tibble 的最佳方法是什么?

我明白 data.table有一些巧妙的功能 setDTsetDF函数,通过引用从 data.frame 转换为 data.table(反之亦然),即不复制。

但是如果我想转换回 tibble 怎么办?我是否使用 as_tibble 复制数据?在由 setDT() 产生的 data.frame 上?有没有聪明的方法来使用它,也许使用 setattr()来自 data.table ?

library(data.table)
library(tidyverse)

iris_tib <- as_tibble(iris)

## some data.table operation
setDT(iris_tib)
setkey(iris_tib, Species)
iris_tib[, Sepal.Length.Mean := mean(Sepal.Length), by = Species]



## How to convert back to tibble efficiently?
setDF(iris_tib)
iris_tib_back <- as_tibble(iris_tib)

## it looks like we were able to update by reference? Only rownames were (shallow) copied?
changes(iris_tib, iris_tib_back)

最佳答案

正如@Frank 提到的,这在帖子 here 中进行了讨论。 .一种可能性是使用 setattr()函数,通过引用设置属性。恰恰:

setattr(x, "class", c("tbl", "tbl_df", "data.frame"))

如果对原始类有疑问:
old_class <- class(iris_tib)
setDT(iris_tib)
.... # bunch of data.table operatios
setDF(iris_tib)
setattr(iris_tib, "class", old_class)

这似乎完成了转换回小标题的必要工作。

关于R data.table : how to go from tibble to data. 表返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52431288/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com