2013-02-20 12 views
8

chcę użyć RStudio edytować R-skrypt o parametry wiersza poleceń, npCzy można określić parametry wiersza poleceń dla skryptu R w aplikacji RStudio?

my_rscript --dataset mydataset 

a następnie odczytać wartość optiion do zmiennej R, powiedzmy, dataset, na przykład, za pomocą optparse bibliotekę.

Jednak nie mogłem znaleźć, gdzie w RStudio można wprowadzić linię poleceń, dzięki czemu mogę korzystać z funkcji "Źródło przy zapisie". Zamiast tego muszę zakodować wszystkie parametry programu w samym programie:

dataset <- "mydataset" 

, która wymaga modyfikacji tekstu skryptu za każdym razem, gdy trzeba podać inne dane.

Czy ktoś wie, jak podać informacje w wierszu poleceń?

+0

Twoje pytanie nie wydaje się być szczególnie związane z RStudio, ale bardziej ogólnie do R, więc retagged to. Jeśli nie o to ci chodzi, musisz edytować swoje pytanie. – TARehman

Odpowiedz

5

Wiem, że to pytanie jest stary, a poniżej link jest stary, ale odpowiada na pytanie. Nie, nie jest możliwe (lub nie było od 29 stycznia 2012 r.) Uzyskanie dostępu do argumentów linii poleceń z RStudio.

link https://support.rstudio.com/hc/communities/public/questions/200659066-Accessing-command-line-options-in-RStudio?locale=en-us

+6

Może to być technicznie poprawne, ale oczywiście możliwe (i zawsze było to możliwe) przekazywanie argumentów za pomocą 'systemu (" rscript myscript.r -a -b -c ")' który można uruchomić z konsoli RStudio - patrz odpowiedź z @biocyberman, myślę, że to powinna być zaakceptowana odpowiedź. – andreister

3

Możesz wywoływać swoje programy za pomocą Rscript programname.r arg1 arg2 arg3. Argumenty są przekazywane do commandArgs, więc dodaje byłoby prawdziwe:

Rscript programname.r F N 32 

> args <- commandArgs(trailingOnly=TRUE) 
> args[1] 
[1] F 
> args[2] 
[1] N 
> args[3] 
[1] 32 
14

Na razie robię to w ten sposób: otworzyć nowe okno edycji nowego Rscript. Jeśli chcę go zachować mogę zapisać i nazwać to coś takiego: test_myscript.R To jest treść test_myscript.R:

debug(getopt) # suppose I want to debug 'getopt' function in 'myscript.R' 
system("myscript.R -a -b -c") 
# Debug process start after this. 
# Check ?browser for help about navigating inside browser 
0

Jest to bardzo stary, ale natknąłem się nim, gdy próbuje zrobić to samo, a ja Wcześniej zakończył się po prostu staramy następuje i jest ładne i szybkie, jeśli ludzie chcą go (prawdopodobnie użyteczne tylko dla poleceń, które mają kilka prostych args choć) spróbuj:

dałam Rscript który obecnie zaczyna:

args <- commandArgs(TRUE) 
df <- read.csv(args[1], sep=",", check.names=FALSE, row.names = 1) 
. 
. # Do some analysis and plotting etc. 
. 

Jeśli I chciał naśladować wiersza poleceń, że Rscript przeciwnym wypadku otrzymane można dokonać args wektor up „ręcznie”:

args <- c("/path/to/my/inputfile.csv") 

następnie args[1] zaczyna się na tę samą wartość zawsze będzie miało. i po prostu uruchamiam wszystko inne w skrypcie, podświetlając i wykonując w RStudio.

+0

Jak ustawić 'args' poza skryptem w taki sposób, że' args <- commandArgs (TRUE) 'wewnątrz skryptu nie przesłania ich? –

1

Ten pracował dla mnie: Moja Rscript się następująco:

args <- commandArgs() 
print(paste0("args:", args)) 
print(paste0("args[1]:",args[1])) 
print(paste0("args[2]:",args[2])) 
print(paste0("args[3]:",args[3])) 
print(paste0("# of args:",length(args))) 

'

naśladować linii poleceń użyłbym z Rscript, wszedłem to w RStudio:

commandArgs <- function() c("AMZN", 10, 200)

, który dał pożądany wynik:

[1] "args:AMZN" "args:10" "args:200" 
[1] "args[1]:AMZN" 
[1] "args[2]:10" 
[1] "args[3]:200" 
[1] "# of args:3" 
+0

Trwale zmieniasz funkcję 'commandArgs()'. IMHO to kiepskie rozwiązanie. –

1

Jeśli chcesz użyć np. argparser i dalszego rozwijania/analizując interaktywnie za pomocą Rstudio, można użyć następujących obejść:

  1. Wpisz swój wiersza polecenia parsera w my_rscript i stworzyć obiekt, który zawiera wszystkie args analizowany wejście.
  2. Dodaj linię, która zapisuje obiekt args do pliku.
  3. Uruchom my_rscript z wiersza poleceń i określ interesujące argumenty.
  4. Załaduj obiekt args z pliku w Rstudio i kontynuować interaktywnie

Przykład:

library("argparser") 
parser <- arg_parser(description='Process commandline arguments') 
parser <- add_argument(parser, arg="--dataset", type="character", help = "Dataset argument") 
args = parse_args(parser) 
args_file = "tempArgObjectFile.rds" 
saveRDS(args, args_file); print(args); quit(); #comment this after creating args_file 
args = readRDS(args_file) #use this to load during interactive development 
Powiązane problemy