将具有可变列类型的多个.csv文件导入到R中

lee*_*sej -1 r dplyr tidyverse

如何正确构建lapply以从所有.csv文件中读取(从一个目录中),将所有列作为字符串加载,然后将它们绑定到一个数据框中.

,我有办法让所有加载并装订成数据帧该.csv文件.不幸的是,他们对这些列如何进行类型转换的可变性感到困惑.因此给我这个错误:

错误:无法在列中自动从字符转换为整数

我尝试用数据类型参数补充代码,并试图将所有内容保存为字符; 我现在陷入困境,能够正确地获得我的'lapply'循环'以有效地引用其'循环'的每个循环的主题.

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
Run Code Online (Sandbox Code Playgroud)

是否有一个简单的解决方案,我可以保持整齐,或者我必须下降一个级别,然后自己公开构建for循环 - 按此.

Jak*_*upp 8

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")))
Run Code Online (Sandbox Code Playgroud)

这将把整个事物绑定到最后的数据框中.