gpt4 book ai didi

r - 使 commandargs 以逗号分隔或解析空格

转载 作者:行者123 更新时间:2023-12-04 12:22:59 24 4
gpt4 key购买 nike

我正在尝试使用命令行参数从命令行运行 R。这包括传入一些文件路径作为脚本内部使用的参数。大多数情况下这一切都有效,但有时路径中有空格并且 R 不理解。

我正在运行以下形式的东西:

R CMD BATCH --slave "--args inputfile='C:/Work/FolderWith SpaceInName/myinputfile.csv' outputfile='C:/Work/myoutputfile.csv'" RScript.r ROut.txt

然后 R 抛出一个文件说
Fatal error: cannot open file 'C:\Work\FolderWith': No such file or directory

所以显然我的单引号不足以告诉 R 将引号内的所有内容作为参数值。我想这意味着我应该找到一种方法来分隔我的 --args使用逗号,但我找不到办法做到这一点。我确定这很简单,但我在文档中没有找到任何内容。

当前的脚本非常基础:
ca = commandArgs(trailingOnly=TRUE)
eval(parse(text=ca))
tempdata = read.csv(inputFile)
tempdata$total = apply(tempdata[,4:18], 1, sum)
write.csv(tempdata, outputFile, row.names = FALSE)

如果相关,我正在为此使用 Windows,但这似乎不是 cmd 提示问题。

最佳答案

使用 eval(parse())可能不是解析命令行参数的最佳和最有效的方法。我建议使用像 optparse 这样的包为你做解析。解析命令行args已经解决了,不需要重新实现。我可以想象这可以解决您的问题。虽然,路径名中的空格一开始是个坏主意。

或者,您可以采用一种非常简单的方法并像这样传递参数:

R CMD BATCH --slave arg1 arg2

您可以在哪里检索它们,例如:
ca = commandArgs(TRUE)
arg1 = ca[2]
arg2 = ca[3]

这避免了 eval(parse我认为这是导致问题的原因。最后,您可以尝试像这样逃离空间:
R CMD BATCH --slave "C:/spam\ bla"

你也可以给 Rscript试一试, R CMD BATCH似乎不如 Rscript受欢迎.

关于r - 使 commandargs 以逗号分隔或解析空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13721872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com