readr::read_csv 使用 cols_only 与拼接列表

readr::read_csv use cols_only with spliced list

我可以像这样读取 cols_only 中定义的列子集:

x <- read_csv(filePath, col_types=cols_only(colA=col_character())
x <- read_csv(filePath, col_types=cols_only(colA='c'))

两者都工作正常,但我尝试创建一个列表以传递给 cols_only 并拼接它,就像我在许多 Tidyverse 函数中所做的那样,但是这个会产生错误。

cols <- list(colA='c')
x <- read_csv(filePath, col_types=cols_only(!!!cols))

我也尝试将其作为命名向量 cols <- c(colA='c'),但出现错误 Error in !cols: invalid argument type

这是功能的限制吗?我看到这个 GitHub 问题 https://github.com/tidyverse/readr/issues/971 所以希望这个功能可以支持这个功能。

如果拼接不行,就用do.call

library(readr)
df1 <- read_csv(file.choose(), col_types = do.call(cols_only, cols))

使用一个可重现的小例子

cols1 <- list(`Service Charge`='c', `MONTHLY FEES` = 'c')
df1 <- read_csv(file.choose(), 
        col_types = do.call(cols_only, cols1))

-输出

head(df1)
# A tibble: 6 x 2
#  `Service Charge`      `MONTHLY FEES`            
#  <chr>                 <chr>                     
#1 Customer Transfer Dr. INVESTMENT PURCHASE       
#2 Customer Transfer Dr. INVESTMENT PURCHASE       
#3 Miscellaneous Payment PAYPAL