Импорт нескольких файлов.csv с переменными типами столбцов в R

Как правильно построить lapply для чтения (из одного каталога) всех файлов.csv, загрузки всех столбцов в виде строк и затем связывания их в один фрейм данных.

Благодаря этому у меня есть способ загрузить все файлы.csv и связать их с кадром данных. К сожалению, они зацикливаются на том, как столбцы получают тип. Таким образом, давая мне эту ошибку:

Ошибка: не удается автоматически преобразовать символ в число в столбце

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

srvy1 <- structure(list(RESPONSE_ID = 584580L, QUESTION_ID = 328L, SURVEY_ID = 2324L, 
           AFF_ID_INV_RESP = 5L), .Names = c("RESPONSE_ID", "QUESTION_ID", 
                                             "SURVEY_ID", "AFF_ID_INV_RESP"), class = "data.frame", row.names = c(NA, 
                                                                                                                  -1L))

srvy2 <- structure(list(RESPONSE_ID = 584580L, QUESTION_ID = 328L, SURVEY_ID = 2324L, 
           AFF_ID_INV_RESP = "bovine"), .Names = c("RESPONSE_ID", "QUESTION_ID", 
                                                   "SURVEY_ID", "AFF_ID_INV_RESP"), class = "data.frame", row.names = c(NA, 
                                                                                                                        -1L))    

files = list.files(pattern="*.csv")
tbl = lapply(files, read_csv(files, col_types = cols(.default = col_character()))) %>% bind_rows

Есть ли простое решение для этого, что я могу держать в тидиверсе, или я должен опустить уровень и перейти к открытому построению цикла for самостоятельно - по этому.

1 ответ

Решение

lapply должна быть форма lapply(x, FUN, ...) где ... аргументы переданы FUN, Вы заполняете аргументы в FUN. Так должно быть lapply(files, read_csv, col_types = cols(.default = "c"))

Если вам нравится tidyverse решение:

files %>%
  map_df(~read_csv(.x, col_types = cols(.default = "c")))

Который в конце связывает все это в фрейм данных.

Другие вопросы по тегам