我有一个包含250列的数据库,并且只想读取其中的50列,而不是加载所有列,然后用dplyr::select
删除列。我想我可以使用列规范来做到这一点。我不想为所有这些列手动输入列规范。
我要保留的50列有一个通用前缀,例如'blop',因此我设法手动更改了从readr::spec_csv
获得的列规范对象。然后,我用它来读取我的数据文件:
short_colspec <- readr::spec_csv('myfile.csv')
short_colspec$cols <- lapply(names(short_colspec$cols), function(name){
if (substr(name, 1, 4) == 'blop'){
return(col_character())
} else {
return(col_skip())
}
})
short_data <- read_csv('myfile.csv', col_types = short_colspec)
有没有一种方法可以用比我做的更健壮的方式用readr
(或任何其他包)函数来指定这样的列规范?
答案 0 :(得分:1)
使用data.table
的{{1}},您可以选择要跳过(=删除)或保留(= select)的列
fread