Использование переменной lapply в read.csv - PullRequest
0 голосов
/ 06 февраля 2020

Я просто привыкаю к ​​использованию lapply и пытаюсь выяснить, как я могу использовать имена из вектора для добавления в имен файлов, которые я вызываю, и именования новых фреймов данных. Я понимаю, что могу использовать вставку для вызова интересующих файлов, но не уверен, что смогу создать новые кадры данных с добавленным именем _var.

site_list <- c("site_a","site_b", "site_c","site_d")
lapply(site_list,
  function(var) {
    all_var <- read.csv(paste("I:/Results/",var,"_all.csv"))
    tbl_var <- read.csv(paste("I:/Results/",var,"_tbl.csv"))
    rsid_var <-  read.csv(paste("I:/Results/",var,"_rsid.csv"))
    return(var)
})

1 Ответ

0 голосов
/ 06 февраля 2020

Как правило, чаще имеет смысл применить функцию к элементам списка, а затем вернуть список при использовании lapply, где ваши переменные хранятся и могут иметь имена. Пример (редактировать: использовать split для совместной обработки файлов):

files <- list.files(path= "I:/Results/", pattern = "site_[abcd]_.*csv", full.names = TRUE)
files <- split(files, gsub(".*site_([abcd]).*", "\\1", files))
processFiles <- function(x){
    all <- read.csv(x[grep("_all.csv", x)])
    rsid <- read.csv(x[grep("_rsid.csv", x)])
    tbl <- read.csv(x[grep("_tbl.csv", x)])
    # do more stuff, generate df, return(df)
}
res <- lapply(files, processFiles)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...