如何解决使用 R 中 readr 中的 read_csv 将文本作为指定列传递以作为 [type] 打开
我有一些我想打开的 .csv 文件,将默认列类型指定为整数“i”。但是,某些文件也有特定的列,我想告诉 readr::read_csv
以定义的类型打开(哪些列的逻辑无关紧要,假设我知道哪些文件对应哪些列)
有没有办法将这些列传递给 col_types
的 read_csv
参数,同时仍然保持每个其他列都应该以整数类型打开
df <- data.frame(
a = c(1,2,3,4),b = sample(1:100,c_text = c("hi","I","am","text"),d_decimals = runif(4),e_more_text = c("another","text","column","lol")
)
readr::write_csv(df,"/path/to/csv/file.csv")
character_cols <- c("c_text","e_more_text")
double_cols <- "d_decimals"
data <- readr::read_csv(
"/path/to/csv/file.csv",# supply something here to determine column types
col_types = cols(.default = "i",character_cols = "c",double_cols = "d")
)
因为计算哪些列应该是字符或双精度等的逻辑。我最好将它们作为名称向量提供
干杯
解决方法
您可以创建一个辅助函数,将您的额外规范与默认列规范结合起来,然后将规范与 RuntimeError: dictionary changed size during iteration
结合在一起。
do.call
你也可以使用像这样的助手来避免大量的嵌套逻辑
extra_spec = list(
"c_text" = "c","d_decimals" = "i","e_more_text" = "c"
)
read_csv_with_default_int = function(path,extra_spec) {
readr::read_csv(path,col_types = do.call(cols,c(extra_spec,list(.default = col_integer()))))
}
read_csv_with_default_int("file.csv",extra_spec = extra_spec)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。