使用readr :: spec_csv处理大多数空白列

问题描述

我正在读取许多稀疏数据,其中90%+的许多字符列为空白或单个空格。如果前1000行没有数据(根据https://github.com/tidyverse/readr/issues/662设计,它将使用readr :: read_csv猜测这些列为逻辑列。

对于100万以上的行,增加guess_max是不切实际的,如果我未指定列,则在发现包含字符数据的行时,对col_logical的猜测会产生解析失败,因此我一直在使用readr :: spec_csv并手动编辑一次指定一列:

colSpec$cols[['colName']] <- col_character()

如果没有太多列,哪个很好。对于非常广泛的数据,我想使用一种更通用的形式,该形式可以选择规范中的所有逻辑列并进行更改,但我找不到正确的语法。 这不起作用:

library(readr)
cs <- readr::spec_csv("colChar,colBlank,colNum,colSpace,colNA\n
                      a,1,NA\n
                      NA,2,NA")

cs
#> cols(
#>   colChar = col_character(),#>   colBlank = col_logical(),#>   colNum = col_double(),#>   colSpace = col_logical(),#>   colNA = col_logical()
#> )
cs[cs$cols == col_logical()] <- list(col_character())
cs
#> cols(
#>   colChar = col_character(),#>   colNA = col_logical()
#> )

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)