Подтвердить что ты не робот

Чтение всех скриптов и файлов данных из нескольких папок

У меня есть две папки, folder1 и folder2 с примерно 200 файлами, каждый из которых либо *rda либо *R Я хочу прочитать все файлы и наборы данных из двух каталогов. Как я могу это сделать?

Пути для:

folder1:  C:\folder1
folder2:  C:\folder2 

Мой суд

setwd("C:/folder1")
myls <- ls() # do work as this will only list that are already loaded in the system 
setwd("C:/folder2")
myls2 <- ls()
myls  # do work as this will only list that are already loaded in the system 

Я знаю, что это простой вопрос, но у меня нет ответа.

4b9b3361

Ответ 1

Поскольку .rda требует load а для source .R требуется source, я бы сделал что-то вроде этого:

file.sources = list.files(pattern="*.R")
data.sources = list.files(pattern="*.rda")
sapply(data.sources,load,.GlobalEnv)
sapply(file.sources,source,.GlobalEnv)

Обновление для чтения из нескольких папок сразу

file.sources = list.files(c("C:/folder1", "C:/folder2"), 
                          pattern="*.R$", full.names=TRUE, 
                          ignore.case=TRUE)
data.sources = list.files(c("C:/folder1", "C:/folder2"),
                          pattern="*.rda$", full.names=TRUE, 
                          ignore.case=TRUE)
sapply(data.sources,load,.GlobalEnv)
sapply(file.sources,source,.GlobalEnv)

Обратите внимание также на использование $ в конце шаблона поиска, чтобы убедиться, что оно соответствует только, скажем, .R в конце строки, и использование ignore.case в случае, если некоторые из файлов названы, скажем, script.r.

Ответ 2

for (f in list.files(pattern="*.R")) {
    source(f)
}
for (f in list.files(pattern="*.rda")) {
    load(f)
}