довольствоваться read_csv_chunked - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь импортировать несколько .csv файлов размером не менее 1 ГБ, используя lapply и read_csv_chunked.Для создания примеров данных рассмотрим:

A <- data.frame(id = sample(c("A","B","C"), 100, replace = T), k = rnorm(100), j = rnorm(100), l = rnorm(100)); write_csv(A, "A.csv")
B <- data.frame(id_limp = sample(c("A","B","C"), 100, replace = T), k = rnorm(100), j = rnorm(100), l = rnorm(100)); write_csv(B, "B.csv")
C <- data.frame(id = sample(c("A","B","C"), 100, replace = T), k = rnorm(100), j = rnorm(100), l = rnorm(100)); write_csv(C, "C.csv")
D <- data.frame(id_samp = sample(c("A","B","C"), 100, replace = T), k = rnorm(100), j = rnorm(100), l = rnorm(100)); write_csv(D, "D.csv")
E <- data.frame(id = sample(c("A","B","C"), 100, replace = T), k = rnorm(100), j = rnorm(100), l = rnorm(100)); write_csv(E, "E.csv")

Функции, используемые для read_csv_chunked, следующие:

f <- function(x, pos) if("id" %in% names(x)) { subset(x, id == "A")} else if ("id_limp" %in% names(x)) {subset(x, id_limp == "A")} else {subset(id_samp == "A")}

file_list  <- list.files(pattern = ".csv")
data       <- lapply(file_list, read_csv_chunked, callback = DateFrameCallback$new(f),chunk_size = 10)
names(data)<- tolower(word(gsub("[[:punct:]]+"," ",file_list), 1))
list2env(data, envir = .GlobalEnv)

rm(data)

Где f - это callback функция, необходимая для read_csv_chunked (или, по крайней мере, это так), file_list - это список файлов в папке, которые .csv, data передают функцию lapply, names(data) дает имя тибблув data и list2env записывает части data в мою среду.

Я получаю ошибку:

Error in as_chunk_callback(callback) : 
  object 'DateFrameCallback' not found

Может кто-нибудь объяснить, почему я получаю эту ошибку?Я не получаю ошибку, если не читаю csv по одному и без lapply.Что это за исправление?Или есть лучшее решение?

...