Я кодирую на R.
Я думал, что добился неплохих успехов в R. Я создал сценарий, который считывает аргументы командной строки (был один единственный аргумент, это было имя файла данных), считывал данные из .csv, выполнял регрессию и распечатал некоторые данные.
Где-то по ходу дела что-то переделал и все вышло в окно. Впоследствии я разрушил весь свой сценарий, и теперь у меня есть самый простой сценарий, который ведет себя странно. Вот что у меня сейчас есть:
#NOTE: To run the script use the following command in terminal R CMD
#BATCH scriptname arguments #store the current directory
initial.dir<-getwd()
#set the output
sink("PROGOUT.out")
#Get commandline arguments
args<-commandArgs(trailingOnly=TRUE)
print(args)
"HELLO WORLD"
Я ожидал, что эта программа создаст файл PROGOUT.out, содержащий аргументы командной строки и фразу HELLO WORLD.
В командной строке я запустил
$ R CMD BATCH R_ScriptV3.R test1 test2 test3 test4
Программа создает два файла: test1 и PROGOUT.out.
Это содержимое PROGOUT.out:
персонаж (0)
[1] "ПРИВЕТ, МИР"
proc.time () пользовательская система истекла 0,201 0,026 0,219
Это содержимое test1:
R, версия 3.1.2 (2014-10-31) - «Тыквенный шлем» Авторские права (C) 2014 Фонд R для платформы статистических вычислений: x86_64-apple-darwin10.8.0 (64-разрядная версия) R является бесплатным программным обеспечением и поставляется с АБСОЛЮТНО ОТСУТСТВИЕ ГАРАНТИЙ. Вы можете распространять ее при определенных условиях. Для получения подробной информации о распространении введите «license ()» или «license ()». Поддержка естественного языка, но работающая на английском языке. R - это совместный проект со многими участниками. Для получения дополнительной информации введите «участники ()» и «цитирование ()» о том, как цитировать пакеты R или R в публикациях. Введите «demo ()» для некоторых демонстраций, «help ()» для интерактивной справки или «help.start ()» для справки через интерфейс браузера HTML. Введите 'q ()', чтобы выйти из R. [Восстановлено ранее сохраненное рабочее пространство]>
ПРИМЕЧАНИЕ. Для запуска сценария используйте следующую команду в терминале
R CMD BATCH scriptname arguments>> # сохранить текущий каталог
initial.dir ‹-getwd ()
установить выход
раковина ("PROGOUT.out")
Получить аргументы командной строки
args ‹-commandArgs (trailingOnly = ИСТИНА)
печать (аргументы)
"ПРИВЕТ МИР">
Итак ... 1) почему программа создала файл test1? Этого не происходило, когда я начинал писать скрипт, но похоже, что первый аргумент в командной строке становится файлом с некоторой информацией заголовка и копией программы ?, 2) PROGOUT.out действительно содержит оператор HELLO WORLD, но он есть НЕ содержать никаких других аргументов .... почему бы и нет, и как мне прочитать эти аргументы в моем скрипте.
Я мог поклясться, что раньше все работало нормально. Любые идеи?
sink(fname)
, вам необходимо ввести командуsink()
. Сама функция всегда возвращает NULL, поэтому нет смысла назначать ее результат какому-либо символу R. - person IRTFM   schedule 12.02.2015