Импорт нескольких файлов.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")))
Который в конце связывает все это в фрейм данных.