Укажите количество столбцов, к которым применяется read_csv - PullRequest
3 голосов
/ 27 сентября 2019

Можно ли передать индексы столбцов в read_csv?

Я передаю много файлов CSV в read_csv с разными именами заголовков, поэтому вместо указания имен я хочу использовать индексы столбцов.

Возможно ли это?

df.list <- lapply(myExcelCSV, read_csv, skip = headers2skip[i]-1)

1 Ответ

4 голосов
/ 27 сентября 2019

В качестве альтернативы вы можете использовать компактное строковое представление, где каждый символ представляет один столбец: 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 аргументы, которые могут быть указаны по имени или позиции?)

...