我使用預裝的包RSCRIPT在R.R:RSCRIPT向量作爲參數
我想調用以下RSCRIPT與從命令提示的名稱「test.R」:
a <- c("a", "b", "c")
a
args <- commandArgs(TRUE)
b <- as.vector(args[1])
b
我使用下面的命令:
RScript test.R c("d","e","f")
這產生以下輸出:
[1] "a" "b" "c"
[1] "c(d,e,f)"
如您所見,第一個(也是唯一的)參數被解釋爲字符串,然後轉換爲1維向量。如何將該論點解釋爲一個向量?
旁註:當然,矢量的項目可以分成幾個參數,但在我的最終項目中,會有多個矢量參數。而實現這樣的東西是我的最後一招:
RScript test.R "d" "e" "f" END_OF_VECTOR_1 "g" "h" "i" END_OF_VECTOR_2 "j" "k" "l"
是的,這是另一種方法,但是'eval(parse(text = ...))'在R社區中非常不滿。想象一下,如果一個惡意用戶傳入'q(「no」)'作爲參數會發生什麼。或者更糟的是'system(「rm -rf/*」)'。不要嘗試第二個例子,它會嘗試刪除機器上的所有內容......另一方面,在編寫腳本時,將參數作爲以逗號分隔的列表傳遞是安全和非常普遍的。 – flodel 2014-11-01 23:23:03