GOOGLE ADS

пятница, 15 апреля 2022 г.

Объединение нескольких наборов данных более компактным способом

Всякий раз, когда у меня есть несколько наборов данных, которые я хочу загрузить и объединить в один набор данных, чтобы я мог анализировать их все одновременно, я делаю что-то вроде

for(i in 1:length(dataset_paths))
{
data_path <- list.files(path = paste0(here(dataset_paths[i]), "results/analysis/"), pattern = ".*\\.degradation_dynamics\\.csv", full.names = TRUE)
t_dt <- fread(data_path)
if(i == 1)
{
dt <- t_dt
}
dt <- rbind(dt, t_dt)
}
rm(t_dt)
dt %>% setkey(frame)

Этот код довольно уродлив.

Есть ли способ сделать этот код более компактным и понятным?

Например,


  • Избавление от условия if внутри цикла

  • Избавьтесь от 1:length(dataset_paths)выражения

  • Избавление от определения временной переменнойt_dt?



Решение проблемы

Имейте в виду, что следующий код не тестировался, но с его помощью lapplyвы делаете что-то вроде:

dt <- lapply(dataset_paths, function(x) {
data_path <- list.files(path = here(x, "results", "analysis"), pattern = ".*\\.degradation_dynamics\\.csv", full.names = TRUE)
fread(data_path)
})
dt <- do.call(rbind, dt)
dt %>% setkey(frame)

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...