微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决readr::read_csv 使用 cols_only 和拼接列表

我可以像这样读取 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(),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                  

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。