feather
- это двоичный формат файла. Если вы посмотрите на исходный код read_feather
, он читает файл целом в память, вызывая feather(path)
, а затем выбирает нужные столбцы. Посмотрите:
read_feather
#> function (path, columns = NULL)
#> {
#> data <- feather(path)
#> on.exit(close(data), add = TRUE)
#> if (is.null(columns))
#> as_tibble(data)
#> else as_tibble(data[columns])
#> }
#> <bytecode: 0x376de188>
#> <environment: namespace:feather>
Имена (несжатых) столбцов в файле , но они не находятся в надежных местах, потому что они появляются после полей данных переменной длины, поэтому нет способ просто прочитать небольшую часть двоичного файла и получить имена.
Поэтому лучше всего сделать что-то подобное, что сначала проверяет наличие указанного столбца:
read_feather_column <- function(path, column)
{
df <- feather(path)
if(hasName(df, column))
return(as_tibble(df[column]))
}