R Language
Стандартизировать анализ путем написания автономных R-скриптов
Поиск…
Вступление
Если вы хотите регулярно применять анализ R к большому количеству отдельных файлов данных или предоставлять повторяемый метод анализа другим людям, исполняемый R-скрипт является удобным для пользователя способом. Вместо того, чтобы вы или ваш пользователь должны были вызвать R
и выполнить ваш скрипт внутри R через source(.)
Или вызов функции, ваш пользователь может просто вызвать сам сценарий, как если бы это была программа.
замечания
Для представления стандартных каналов ввода / вывода используйте file("stdin")
функций file("stdin")
(ввод с терминала или другой программы через канал), stdout()
(стандартный вывод) и stderr()
(стандартная ошибка). Обратите внимание, что, хотя есть функция stdin()
, ее нельзя использовать при поставке готового скрипта в R, потому что он будет читать следующие строки этого скрипта вместо ввода пользователем.
Базовая структура автономной программы R и как ее называть
Первый автономный сценарий R
Отдельные сценарии R не выполняются программой R
( R.exe
под Windows), а программой Rscript
( Rscript.exe
), которая по умолчанию включена в вашу установку R
Чтобы намекнуть на этот факт, автономные R-скрипты начинаются со специальной строки под названием Shebang line , которая содержит следующий контент: #!/usr/bin/env Rscript
. В Windows требуется дополнительная мера, которая позже будет описана.
Следующий простой автономный скрипт R сохраняет гистограмму под именем файла «hist.png» из чисел, которые он получает в качестве входных данных:
#!/usr/bin/env Rscript
# User message (\n = end the line)
cat("Input numbers, separated by space:\n")
# Read user input as one string (n=1 -> Read only one line)
input <- readLines(file('stdin'), n=1)
# Split the string at each space (\\s == any space)
input <- strsplit(input, "\\s")[[1]]
# convert the obtained vector of strings to numbers
input <- as.numeric(input)
# Open the output picture file
png("hist.png",width=400, height=300)
# Draw the histogram
hist(input)
# Close the output file
dev.off()
Вы можете увидеть несколько ключевых элементов автономного сценария R. В первой строке вы видите линию Шебанга. Вслед за этим cat("....\n")
используется для печати сообщения пользователю. Используйте file("stdin")
когда вы хотите указать «Пользовательский ввод на консоли» в качестве источника данных. Это можно использовать вместо имени файла в нескольких функциях чтения данных ( scan
, read.table
, read.csv
, ...). После того, как пользовательский ввод преобразуется из строк в числа, начинается печать. Там видно, что команды построения, которые должны быть записаны в файл, должны быть заключены в две команды. В этом случае png(.)
И dev.off()
. Первая функция зависит от желаемого формата выходного файла (другие общие варианты: jpeg(.)
И pdf(.)
). Вторая функция, dev.off()
всегда требуется. Он записывает график в файл и завершает процесс построения графика.
Подготовка автономного сценария R
Linux / Mac
Файл автономного скрипта должен быть сначала выполнен исполняемым. Это можно сделать, щелкнув правой кнопкой мыши файл, открыв «Свойства» в открывшемся меню и установив флажок «Исполняемый файл» на вкладке «Разрешения». Кроме того, команда
chmod +x PATH/TO/SCRIPT/SCRIPTNAME.R
можно вызвать в терминале.
Windows
Для каждого отдельного сценария командный файл должен быть написан со следующим содержимым:
"C:\Program Files\R-XXXXXXX\bin\Rscript.exe" "%~dp0\XXXXXXX.R" %*
Пакетный файл является обычным текстовым файлом, но с расширением *.bat
кроме расширения *.txt
. Создайте его, используя текстовый редактор, например notepad
(не Word
) или аналогичный, и поместите имя файла в кавычки "FILENAME.bat"
) в диалоговом окне сохранения. Чтобы отредактировать существующий пакетный файл, щелкните его правой кнопкой мыши и выберите «Изменить».
Вы должны адаптировать код, показанный выше, везде XXX...
написано:
- Вставьте правильную папку, в которой находится ваша установка R
- Вставьте правильное имя своего сценария и поместите его в тот же каталог, что и этот командный файл.
Объяснение элементов в коде: первая часть "C:\...\Rscript.exe"
сообщает Windows, где найти программу Rscript.exe
. Вторая часть "%~dp0\XXX.R"
сообщает Rscript
выполнить написанный вами R-скрипт, который находится в той же папке, что и командный файл ( %~dp0
обозначает папку пакетного файла). Наконец, %*
пересылает любые аргументы командной строки, которые вы передаете пакетному файлу в R-скрипт.
Если вы дважды щелкните командный файл, будет выполнен сценарий R. Если вы перетаскиваете файлы в пакетном файле, соответствующие имена файлов присваиваются сценарию R в качестве аргументов командной строки.
Использование littler для выполнения R-скриптов
littler (произносится little r ) ( cran ) предоставляет помимо других функций две возможности запуска R-скриптов из командной строки с командой littler's r
(когда вы работаете с Linux или MacOS).
Установка Littler
От R:
install.packages("littler")
Путь r
печатается в терминале, например
You could link to the 'r' binary installed in
'/home/*USER*/R/x86_64-pc-linux-gnu-library/3.4/littler/bin/r'
from '/usr/local/bin' in order to use 'r' for scripting.
Чтобы иметь возможность вызывать r
из командной строки системы, необходима символическая ссылка:
ln -s /home/*USER*/R/x86_64-pc-linux-gnu-library/3.4/littler/bin/r /usr/local/bin/r
Использование apt-get (Debian, Ubuntu):
sudo apt-get install littler
Использование littler со стандартными скриптами .r
С помощью r
from littler
можно выполнять автономные R-скрипты без каких-либо изменений в скрипте. Пример скрипта:
# User message (\n = end the line)
cat("Input numbers, separated by space:\n")
# Read user input as one string (n=1 -> Read only one line)
input <- readLines(file('stdin'), n=1)
# Split the string at each space (\\s == any space)
input <- strsplit(input, "\\s")[[1]]
# convert the obtained vector of strings to numbers
input <- as.numeric(input)
# Open the output picture file
png("hist.png",width=400, height=300)
# Draw the histogram
hist(input)
# Close the output file
dev.off()
Обратите внимание, что ни одна shebang не находится в верхней части скриптов. При сохранении, например, hist.r
, он может быть hist.r
непосредственно из системной команды:
r hist.r
Использование littler в сценариях shebanged
Также возможно создать исполняемые R-скрипты с littler, с использованием shebang
#!/usr/bin/env r
в верхней части скрипта. Соответствующий R-скрипт должен быть выполнен исполняемым с помощью chmod +X /path/to/script.r
и может быть непосредственно вызван из системного терминала.