У меня есть data.frame или tibble, который в одном скрипте записывается в файл CSV. В другом сценарии тот же файл CSV считывается в data.frame или tibble. Используя read_csv()
с параметром col_types=
, я могу указать типы столбцов для чтения. Вот пример:
# Create an example dataframe
df <- tibble::tibble(a=1L
, b=1.0
, c="a"
, d=TRUE
, e=lubridate::ymd_hms("2019-03-19T13:15:18Z")
, f=lubridate::ymd("2019-03-19")
, g=factor("a"))
# Write csv to file
readr::write_csv(df, "temp.csv")
# read it back in, supplying a col_types string spec
readr::read_csv("temp.csv", col_types="idclTDf")
#> # A tibble: 1 x 7
#> a b c d e f g
#> <int> <dbl> <chr> <lgl> <dttm> <date> <fct>
#> 1 1 1 a TRUE 2019-03-19 13:15:18 2019-03-19 a
Создано 19 марта 2019 г. пакетом REPEX (v0.2.1)
Проблема в том, что мне нужно знать параметр col_types=
функции read_csv()
(или дать ему угадать, чего я не хочу делать). Я бы хотел каким-то образом взять исходный df
и, прежде чем я его напишу, сгенерировать строку col_types
из объекта df
, который можно использовать для чтения выгруженного CSV обратно. То есть мне нужно что-то, что создаст строка "idclTDf"
, заданная в качестве аргумента data.frame.
Я вижу, что для этого есть запрос функции (и я добавил свои два цента) здесь: https://github.com/tidyverse/readr/issues/895.
readr
. Я думаю, что пакетcsvy
и более общий _ 3_ структура предназначена для устранения необходимости в этой функции, но разработка пакетаcsvy
R приостановлена на неопределенное время, и я не знаю любых альтернатив, которые могут набирать обороты. - person bschneidr   schedule 28.03.2019