Я читаю много больших файлов .csv с одинаковыми именами столбцов и связываю их с помощью следующего кода (как предложено в https://serialmentor.com/blog/2016/6/13/reading-and-combining-many-tidy-data-files-in-R):
require(readr) # for read_csv()
require(purrr) # for map(), reduce()
# find all file names ending in .csv
files <- dir(pattern = "*.csv")
files
data <- files %>%
map(read_csv) %>% # read in all the files individually, using
# the function read_csv() from the readr package
reduce(rbind) # reduce with rbind into one dataframe
data
Однако у моих данных есть один столбец, который нуждается вдля чтения в as.character, потому что в нем есть записи числовых строк, разделенных ",", а в противном случае read_csv превращает этот столбец в числовой без запятых.
Как я могу
1.) Укажите, чтобы читать только в одном столбце (желательно по имени) as.character?
или
2.) Просто читать во всех столбцах как .character?
ThisВторой вариант не идеален, так как тогда я должен изменить многие столбцы обратно на числовые.
Я попытался использовать:
col_types = cols(.default = "c")
, как обсуждалось в https://github.com/tidyverse/readr/issues/148 и https://github.com/tidyverse/readr/issues/292.
Мой подход был такой:
data <- files %>%
map(read_csv( col_types = cols(.default = "c" ))) %>%
reduce(rbind)
data
Однако это не работает, потому что тогда read_csv () хочет ввод 'x' (то есть путь к файлу .csv).Выдает эту ошибку:
Error in read_delimited(file, tokenizer, col_names = col_names, col_types = col_types, :
argument "file" is missing, with no default