R readr:获取现有数据的列规范,而不是导入的?

R readr:获取现有数据的列规范,而不是导入的?,r,tidyverse,readr,R,Tidyverse,Readr,我有一个在R会话中创建的数据集,我想1)导出为csv 2)单独保存readr类型列规范。这将允许我稍后使用read_csv()并从保存在2)中的文件中指定col_类型来读取此数据 问题:只能为使用read.*函数读取的数据获取列规范(属性spec)。从R?中创建的数据集中直接获取列规范似乎是不可能的 到目前为止,我的工作是: 导出项目:write\u csv() 从导出的文件中读取规范:spec\u csv() 保存列规范:write_rds() 然后最后读取\u csv(步骤1,列类型=步骤3

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

问题:只能为使用
read.*
函数读取的数据获取列规范(属性
spec
)。从R?中创建的数据集中直接获取列规范似乎是不可能的

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

  • 导出项目:
    write\u csv()

  • 从导出的文件中读取规范:
    spec\u csv()

  • 保存列规范:
    write_rds()

  • 然后最后
    读取\u csv(步骤1,列类型=步骤3)

  • 但这很容易出错,因为
    spec\u csv()
    可能会出错:这实际上只是猜测,所以如果所有值都是NA,则需要为任意(字符)类赋予属性。理想情况下,我希望能够直接从原始数据集中提取列规范,而不是编写/重新加载。我该怎么做?即,如何将数据帧的类转换为
    spec
    对象

    谢谢

    实际(低效)工作流量:


    你能不能A)说什么情况下允许
    spec\u csv
    出错,B)发布一个实际发生这种情况的例子?当然,我添加了一个关于这一点的讨论,虽然这不是本文的重点,但在文件上运行specs\u cols也可能很慢。你能A)说什么情况下允许
    spec\u csv
    出错,(B)发布一个实际发生这种情况的示例?当然,我添加了一个关于这种情况的讨论,虽然这不是本文的重点,但在文件上运行specs_cols也可能会很慢。
    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"))