Аргументы командной строки в R равны нулю

Я кодирую на 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, но он есть НЕ содержать никаких других аргументов .... почему бы и нет, и как мне прочитать эти аргументы в моем скрипте.

Я мог поклясться, что раньше все работало нормально. Любые идеи?


r
person djs05101985    schedule 11.02.2015    source источник
comment
Чтобы закрыть файл, открытый с помощью sink(fname), вам необходимо ввести команду sink(). Сама функция всегда возвращает NULL, поэтому нет смысла назначать ее результат какому-либо символу R.   -  person IRTFM    schedule 12.02.2015


Ответы (1)


Вы ищете Rscript:

Rscript R_ScriptV3.R test1 test2 test3 test4

Параметры R CMD BATCH работают иначе:

R CMD BATCH '--args test1 test2 test3 test4' R_ScriptV3.R output.Rout
person eddi    schedule 11.02.2015
comment
Спасибо, Эдди. Извините, что новичок! - person djs05101985; 12.02.2015