簡體   English   中英

字符向量作為R腳本的參數

[英]Character vector as an argument to R script

我正在運行R腳本,但面臨錯誤:

Rscript example.R“a,b,c”

我在代碼上運行,其中a,b,c是作為參數傳遞的字符向量的元素。 如果我傳遞數值(例如1,5,6),上面的代碼工作正常

Code is :
library("optparse")
library("tldutils") # eval_string
# install.packages("tldutils", repos="http://R-Forge.R-project.org")
option_list <- list(
make_option(c("-c", "--count"), type="character", default="5",
help='Vector of numbers separated by commas and surrounded by ""',
metavar="number")
)
args <- parse_args(OptionParser(option_list = option_list))
print(args$c)
eval_string(sprintf("foo = c(%s)", args$c))
print(foo)

錯誤是:

Error in eval(expr, envir, enclos) : object 'a' not found
Calls: eval_string -> eval.parent -> eval -> eval
Execution halted

請幫助我,我需要在代碼中編輯?

不確定我是否得到了你想要的東西,但有了這個,我希望你能夠自己弄清楚細節並解決你的問題。

將字符向量作為參數傳遞給R的最簡單方法是使用commandArgs函數(基本包,不需要安裝任何花哨的東西)。

# Start R from the shell
$ R --args a,b,c

# Within R
> commandArgs()
[1] "/usr/lib64/R/bin/exec/R" "--args"                 
[3] "a,b,c"

如果您只想獲取--args之后指定的參數, --args使用trailingOnly=TRUE 添加strsplit"a,b,c"轉換為三元素向量。 或者,將逗號更改為空格,您不需要strsplit

$ R --args a,b,c
...
> strsplit(commandArgs(TRUE), ",")[[1]]
[1] "a" "b" "c"

$ R --args a b c
...
> commandArgs(T)
[1] "a" "b" "c"

傳遞給腳本的“a,b,c”被解釋為變量名,而不是字符串。

編輯:無論如何,我不明白你為什么要將數據作為參數傳遞而不是a)從標准輸入讀取它或更好b)從文件中讀取它使用例如read.table

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM