Я использую в основном таблицы в формате tibble от tidyverse
, но для некоторых шагов я использую пакет data.table
.Я хочу посмотреть, как лучше конвертировать data.table обратно в tibble ?
Я понимаю, что data.table
имеет некоторую умную функцию setDT и setDF , которые преобразуют из data.frame в данные.table (и наоборот) по ссылке, т.е. без копирования.
Но что, если я захочу преобразовать обратно в tibble ?Копирую ли я данные с помощью as_tibble
на data.frame , полученном из setDT()
?Есть ли умный способ использовать это, может быть, используя 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)