setwd() в текущем рабочем каталоге
У меня есть список папок. В каждой папке есть R идентичный скрипт, который должен запускаться для файлов в папке. Я написал сценарий один раз и скопировал сценарий в каждую папку. Проблема в том, что у меня есть список из около 100 папок, поэтому я не могу установить setwd() в текущем рабочем каталоге вручную. Я хотел бы знать, возможно ли установить текущий рабочий каталог, например, с помощью "." в этом случае:
setwd("/User/myname/./")
или другим простым способом, который сообщает R текущую рабочую директорию вместо того, чтобы каждый раз вводить имя папки.
3 ответа
Как насчет этого?
# set the working directory to the main folder containing all the directories
setwd( "/user/yourdir/" )
# pull all files and folders (including subfolders) into a character vector
# keep ONLY the files that END with ".R" or ".r"
r.scripts <- list.files( pattern=".*\\.[rR]$" , recursive = TRUE )
# look at the contents.. now you've got just the R scripts..
# i think that's what you want?
r.scripts
# and you can loop through and source() each one
for ( i in r.scripts ) source( i )
Насколько я понимаю, вы хотите запустить пакет R-сценариев, где сценарии распределены по нескольким папкам.
Лично я бы, вероятно, написал сценарий оболочки (или эквивалент ОС) для этого, а не для R.
for dir in /directoriesLocation/*/
do
cat $dir/scriptName.R | R --slave --args $arg1 $arg2
done
где $dir - это местоположение всех каталогов, содержащих скрипт R scriptName.R
В дополнение к другим замечательным ответам source
функция имеет chdir
аргумент, который временно изменит рабочий каталог на тот, в котором находится исходный файл.
Один из вариантов - создать вектор с именами файлов (включая пути) для каждого из ваших файлов скриптов, используя list.files
и / или другие инструменты. затем source
каждый из этих файлов и позволяя source
с chdir
ручкой настройки рабочего каталога для вас.