I have a data.frame or tibble that, in one script, is written to a CSV file. In another script, that same CSV file is read into a data.frame or tibble. Using read_csv()
, with the col_types=
parameter, I can specify the column types to read in. Here is an example:
# 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
Created on 2019-03-19 by the reprex package (v0.2.1)
The issue is that I need to know the col_types=
parameter on the read_csv()
function (or let it guess, which I don't want to do). What I'd like is some way to take the original df
and, before I write it out, generate the col_types
string from the df
object that can be used to read the dumped CSV back in. That is, I want something that will create the "idclTDf"
string given the data.frame as an argument.
I see there is a feature request to do this (and I have added my two cents) here: https://github.com/tidyverse/readr/issues/895 .