R readr:获取现有数据的列规范,而不是导入的?
我有一个在R会话中创建的数据集,我想1)导出为csv 2)单独保存readr类型列规范。这将允许我稍后使用read_csv()并从保存在2)中的文件中指定col_类型来读取此数据 问题:只能为使用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
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"))