2016-11-16 5 views
-1

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

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

Error: Can not automatically convert from character to integer in column

Я попытался дополняющий код с arguments for data type и пытаюсь просто сохранить все как символы; Я теперь застрял в том, что смог правильно получить свою «петлю», чтобы эффективно ссылаться на предмет каждого цикла своей «петли».

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 

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

+0

и нижний предел для чего именно? –

+1

Скорее всего, из-за отсутствия воспроизводимого примера с данными. У вас есть некоторые ошибки в коде. Это должно быть 'lapply (fies, read_csv, col_types = cols (.default = col_character())) –

+1

Я бы поставил' head (x, 5) 'из двух файлов, создав список из этих и' dput' результаты и вставьте их здесь. –

ответ

6

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"))) 

Что будет связывать все это в кадр данных в конце.

 Смежные вопросы

  • Нет связанных вопросов^_^