r - 字符向量作为 R 脚本的参数

标签 r

我正在运行 R 脚本,但遇到错误:

Rscript 示例.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 之后指定的参数,请使用 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"

关于r - 字符向量作为 R 脚本的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13840207/

相关文章:

R 连接两个因子

r - 网格中的多个传单

javascript - 如何在 Spotfire 仪表板负载上运行 IronPython 脚本

c++ - RCPP:加快读取具有大矩阵(ESRI ASCii格式)的文本文件的速度

r - 具有满足特定条件的列数的新列

r - 将 R shiny checkboxGroupInput 与其他输入选择相结合

r - ggVis : creating a plot with multiple layers on different dataset

r - 如何根据行模式对数据进行子集化?

r - 如何将组放入 `gt` 表的额外列中?

r - 如何在 R 中的绘图文本中包含斜体和下标