将具有可变列类型的多个 .csv 文件导入 R
Importing multiple .csv files with variable column types into R
我如何正确构建一个 lapply 来读取(从一个目录中)所有 .csv 文件,将所有列作为字符串加载,然后将它们绑定到一个数据框中。
根据 this,我有办法加载所有 .csv 文件并将其绑定到数据框中。不幸的是,他们对列如何进行类型转换的可变性感到困惑。因此给我这个错误:
Error: Can not automatically convert from character to integer in
column
我已经尝试用 arguments for data type 补充代码,并试图将所有内容都保留为字符;我现在无法正确地让我的 lapply 'loop' 有效地引用其 'loop' 每个周期的主题。
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 中的简单修复方法,或者我必须降低一个级别并自己公开构建 for 循环 - 根据 this.
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")))
这将在最后将整个事物绑定到一个数据框中。
我如何正确构建一个 lapply 来读取(从一个目录中)所有 .csv 文件,将所有列作为字符串加载,然后将它们绑定到一个数据框中。
根据 this,我有办法加载所有 .csv 文件并将其绑定到数据框中。不幸的是,他们对列如何进行类型转换的可变性感到困惑。因此给我这个错误:
Error: Can not automatically convert from character to integer in column
我已经尝试用 arguments for data type 补充代码,并试图将所有内容都保留为字符;我现在无法正确地让我的 lapply 'loop' 有效地引用其 'loop' 每个周期的主题。
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 中的简单修复方法,或者我必须降低一个级别并自己公开构建 for 循环 - 根据 this.
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")))
这将在最后将整个事物绑定到一个数据框中。