Как пройти через много объектов в R - PullRequest
0 голосов
/ 02 июля 2019

Я новичок в R, и у меня есть 20 файлов .csv, которые я создал после проведенного эксперимента. Имена файлов следуют этому формату «p01_results.csv», и я успешно импортировал их все в свою глобальную среду, каждый в виде набора данных с тем же именем. Прямо сейчас я пытаюсь найти эффективный способ удалить 4 строки и добавить 2 столбца. Я знаю, как сделать это для каждого набора данных в отдельности, как вы можете видеть ниже, но я не знаю, как сделать это через какой-то цикл.

temp = list.files(pattern="*.csv")
list2env( lapply(setNames(temp, make.names(gsub("*.csv$", "", temp))), 
read.csv), envir = .GlobalEnv)

p01_results <- p01_results[-c(1 , 20 , 39 , 58) , ]

p01_results$p <- rep(1, 72)

p01_results$s <- c(rep(1,18), rep(2,18), rep(3,18), rep(4,18))

1 Ответ

0 голосов
/ 02 июля 2019

Я бы предпочел использовать list подход с последующим использованием lapply(). Что-то вроде:

results = vector("list",20)
for (i in 1:20){
     if (i<10) { file = paste0("p0",i,"_results.csv")} else {file = paste0("p",i,"_results.csv")
     results[[i]] = read.csv(file)
}

results = lapply(results,function(x){x <- x[-c(1 , 20 , 39 , 58) , ]

x$p <- rep(1, 72)

x$s <- c(rep(1,18), rep(2,18), rep(3,18), rep(4,18))
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...