У меня есть база данных с 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
(или любого другого пакета) более надежным способом, чем я?