Поиск…


Вступление

Если вы хотите регулярно применять анализ 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 и может быть непосредственно вызван из системного терминала.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow