R 将字符串转换为命名函数参数

R 将字符串转换为命名函数参数,r,rlang,non-standard-evaluation,R,Rlang,Non Standard Evaluation,我有一个R脚本,我打算从命令行调用,其中包括一个函数,可以选择。。。论据。我想将命令行中给出的任何参数作为…中的参数进行解析。。。。我该怎么做 我试过兰格套餐。我认为这样做会奏效: z <- c('x=1', 'y=2') #but actually, z <- commandArgs(T) c(UQS(z)) 这里我希望得到一个向量,就像我调用了cx=1,y=2一样。相反,我得到了一个名为x=1&c的列表。我没有必要推荐您的方法。使用像optparse这样的包来正确解析命令行参数

我有一个R脚本,我打算从命令行调用,其中包括一个函数,可以选择。。。论据。我想将命令行中给出的任何参数作为…中的参数进行解析。。。。我该怎么做

我试过兰格套餐。我认为这样做会奏效:

z <- c('x=1', 'y=2') #but actually, z <- commandArgs(T)
c(UQS(z))

这里我希望得到一个向量,就像我调用了cx=1,y=2一样。相反,我得到了一个名为x=1&c的列表。

我没有必要推荐您的方法。使用像optparse这样的包来正确解析命令行参数会更安全

但也就是说,如果您想将任意字符串视为R代码,您可以只使用evalparsetest=it。当然,如果您真的想使用rlang,可以使用eval\u tidy/parse\u expr


您需要这样做,因为形式a=b的东西不能独立于表达式之外存在,否则它将被解释为赋值。如果只需要使用左边的名称或右边的值,可能有更聪明的方法,但如果将其作为一个字符块传递,则需要对其进行解析。

我不需要推荐您的方法。使用像optparse这样的包来正确解析命令行参数会更安全

但也就是说,如果您想将任意字符串视为R代码,您可以只使用evalparsetest=it。当然,如果您真的想使用rlang,可以使用eval\u tidy/parse\u expr


您需要这样做,因为形式a=b的东西不能独立于表达式之外存在,否则它将被解释为赋值。如果只需要使用左边的名称或右边的值,可能会有更聪明的方法,但如果将其作为一个字符块传递,则需要对其进行解析。

我同意前面的答案,即这有点不安全。这就是说,实现这一点有点安全的一种黑客方法是利用环境

首先,创建一个空白环境:

args_env <- env()

我同意前面的回答,这有点不安全。这就是说,实现这一点有点安全的一种黑客方法是利用环境

首先,创建一个空白环境:

args_env <- env()

我同意这样做总体上是不安全的。我很高兴接受你的解决方案和你的警告,因为我是在一个非常有限的环境下做这件事的。我同意这通常是一件不安全的事情。我很高兴接受你的解决方案和你的警告,因为我是在一个非常有限的情况下这样做的
z <- c("x=1", "y=2")
eval(parse(text = z), envir = args_env)
args_list <- as.list(args_env)
do.call(f, args_list)