Игнорировать конечные разделители в readr::read_csv
Когда я читаю CSV-файл, содержащий конечный разделитель, используя readr::read_csv
, Я получаю предупреждение о том, что имя отсутствующего столбца было заполнено. Вот содержимое короткого примера CSV-файла для воспроизведения этого предупреждения (сохраните следующий фрагмент в файле с именем example.csv
):
A,B,C,
2,1,1,
14,22,5,
9,-4,8,
17,9,-3,
Обратите внимание на запятую в конце каждой строки. Теперь, если я загружу этот файл с
read_csv("example.csv")
Я получаю следующее предупреждение:
Missing column names filled in: 'X4'
Даже если я хочу явно загрузить только 3 столбца с
read_csv("example.csv", col_types=cols_only(A=col_integer(),
B=col_integer(),
C=col_integer()))
Я все еще получаю предупреждающее сообщение.
Это ожидаемое поведение или есть какой-то способ сказать read_csv
что он должен игнорировать все столбцы, кроме тех, которые я указываю? Или есть другой способ привести в порядок этот (явно искаженный) CSV, чтобы конечные разделители были удалены / проигнорированы?
2 ответа
Я не думаю, что ты можешь. Из того, что я вижу в документации, cols_only()
для R объектов, которые вы уже загрузили.
Тем не менее fread()
функция от data.table
библиотека позволяет выбирать конкретные имена столбцов при чтении файла в:
DT <- fread("filename.csv", select = c("colA","colB"))
Вот еще один пример с сообщением об ошибке.
> read_csv("1,2,3\n4,5,6", col_names = c("x", "y"))
Warning: 2 parsing failures.
row # A tibble: 2 x 5 col row col expected actual file expected <int> <chr> <chr> <chr> <chr> actual 1 1 <NA> 2 columns 3 columns literal data file 2 2 <NA> 2 columns 3 columns literal data
# A tibble: 2 x 2
x y
<int> <int>
1 1 2
2 4 5
Вот исправление / взлом. Также смотрите эту ссылку SOF. Подавить читательский разбор проблем в r
> suppressWarnings(read_csv("1,2,3\n4,5,6", col_names = c("x", "y")))
# A tibble: 2 x 2
x y
<int> <int>
1 1 2
2 4 5