В качестве альтернативы вы можете использовать компактное строковое представление, где каждый символ представляет один столбец: c = символ, i = целое число, n = число, d = двойной, l = логический, f = коэффициент, D = дата,T = дата и время, t = время,?= угадать или '_' / '-', чтобы пропустить столбец.
Если вам известно общее число столбцов в файле, вы можете сделать это следующим образом:
my_read <- function(..., tot_cols, skip_cols=numeric(0)) {
csr <- rep("?",tot_cols)
csr[skip_cols] <- "_"
csr <- paste(csr,collapse="")
read_csv(...,col_types=csr)
}
Если вы заранее не знаете общее количество столбцов, вы можете добавить код в эту функцию, чтобы прочитать только первую строку файла и сосчитать количество возвращаемых столбцов ...
FWIW аргумент skip
может не выполнять то, что вы думаете (он пропускает строки вместо выбора / отмены выбора столбцов): когда я читаю ?readr::read_csv()
, кажется, нет удобного способа пропустить и / иливключить определенные столбцы (по имени или по индексу), за исключением некоторого механизма ad hoc , такого как предложенный выше;это может стоить запроса / обсуждения функции в списке проблем readr
?(например, добавить cols_include
и / или cols_exclude
аргументы, которые могут быть указаны по имени или позиции?)