1

我有一个在 R 会话中创建的数据集,我想 1)导出为 csv 2)单独保存 readr 类型的列规范。这将允许我稍后使用 read_csv() 并从保存在 2) 中的文件中指定 col_types 来读取这些数据。

问题:spec仅针对使用read_*函数读取的数据获取列规范(属性)。似乎无法从 R 中创建的数据集中直接获取列规范?

到目前为止,我的工作流程是:

  1. 出口项目:write_csv()

  2. 从导出的文件中读取规范:spec_csv().

  3. 保存列规范:write_rds()

  4. 然后终于read_csv(step_1, col_types=step_3)

但这很容易出错,因为spec_csv()它可能会出错:它确实只是猜测,所以如果所有值都是 NA,需要属性任意(字符)类。理想情况下,我希望能够直接从原始数据集中提取列规范,而不是写入/重新加载。我怎样才能做到这一点?即,如何将我的数据框类转换为spec对象?

谢谢!

实际(低效)工作量:

library(tidyverse)

write_csv(iris, "iris.csv")

spec_csv("iris.csv") %>%
  write_rds("col_specs_path.rda")  

read_csv("iris.csv", col_types = read_rds("col_specs_path.rda"))
4

0 回答 0