Как передать аргументы командной строки, когда source () R-файл

В одном R-файле я планирую источник другого R-файла, который поддерживает чтение двух аргументов командной строки. Это звучит как мелочи, но я не мог найти решение в Интернете. Любая помощь приветствуется.

Я предполагаю, что сценарий с исходным кодом получает доступ к аргументам командной строки с помощью commandArgs ? Если это так, вы можете переопределить commandArgs в родительском скрипте, чтобы вернуть то, что вы хотите, когда оно вызывается в скрипте, который вы используете. Чтобы увидеть, как это будет работать:

file_to_source.R

 print(commandArgs()) 

main_script.R

 commandArgs <- function(...) 1:3 source('file_to_source.R') 

выходы [1] 1 2 3

Если ваш основной скрипт не принимает никаких аргументов командной строки, вы также можете просто предоставить аргументы этому скрипту.

Самое простое решение – заменить source() на system() и paste . Пытаться

 arg1 <- 1 arg2 <- 2 system(paste("Rscript file_to_source.R",arg1, arg2)) 

Если у вас есть один сценарий, который выдает другой скрипт, вы можете определить переменные в первом, которые могут использоваться сценарием источника.

 > tmpfile <- tempfile() > cat("print(a)", file=tmpfile) > a <- 5 > source(tmpfile) [1] 5 

Расширенная версия ответа @Matthew Plourde. Обычно я делаю это, чтобы иметь инструкцию if, чтобы проверить, были ли аргументы командной строки определенными, и читать их иначе.

Кроме того, я пытаюсь использовать библиотеку argparse для чтения аргументов командной строки, поскольку она обеспечивает более аккуратный синтаксис и лучшую документацию.

файл, который будет отправлен

  if (!exists("args")) { suppressPackageStartupMessages(library("argparse")) parser <- ArgumentParser() parser$add_argument("-a", "--arg1", type="character", defalt="a", help="First parameter [default %(defult)s]") parser$add_argument("-b", "--arg2", type="character", defalt="b", help="Second parameter [default %(defult)s]") args <- parser$parse_args() } 

источник вызова файла ()

 args$arg1 = "c" args$arg2 = "d" source ("file_to_be_sourced.R") print (args) 

CD

  • Форматирование больших валютных или долларовых значений в миллионы / миллиарды
  • Вычислить разницу между значениями в последовательных строках по группам
  • используя substitute для получения имени аргумента с помощью
  • Lapply для добавления столбцов в каждый Dataframe в списке
  • Преобразование десятичного в двоичный в R?
  • Найдите, сколько раз повторяющиеся строки повторяются в кадре данных R
  • листинг содержимого файла данных R без загрузки
  • Как вы кодируете функцию R так, чтобы она «знала», чтобы искать «данные» для переменных в других аргументах?
  • Процент% в%
  • Как выбрать строку с максимальным значением в каждой группе
  • Извлечение элементов, общих во всех группах столбцов
  • Давайте будем гением компьютера.