R 命令行参数和 makefile
我在组合 makefile 和接受命令行参数的 R 程序时遇到问题。
一个例子: 我编写了一个 R 文件,它接受命令行参数并生成绘图。
代码
args <- commandArgs(trailingOnly=TRUE)
if (length(args) != 1) {
cat("You must supply only one number\n")
quit()
}
inputnumber <- args[1]
pdf("Rplot.pdf")
plot(1:inputnumber,type="l")
dev.off()
Makefile
all : make Rplot.pdf
Rplot.pdf : test.R
cat test.R | R --slave --args 10
现在的问题是如何提供 --args (本例中为 10),以便我可以这样说: make Rplot.pdf -10
我理解它更多是一个 Makefile
问题,而不是 R
问题。
I am having a problem combining makefile and R program which accepts command line arguments.
An example:
I have written an R file that accepts a command line argument and generates a plot.
Code
args <- commandArgs(trailingOnly=TRUE)
if (length(args) != 1) {
cat("You must supply only one number\n")
quit()
}
inputnumber <- args[1]
pdf("Rplot.pdf")
plot(1:inputnumber,type="l")
dev.off()
Makefile
all : make Rplot.pdf
Rplot.pdf : test.R
cat test.R | R --slave --args 10
Now the question is how to supply --args (10 in this case), so that I can say something like this:make Rplot.pdf -10
I understand its more a Makefile
question rather an R
question.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你在这里有两个问题。
第一个问题是关于命令行参数解析的,我们已经在网站上提出了几个相关问题。请搜索“[r] optparse getopt”以查找例如
等。
第二个问题涉及基本的 Makefile 语法和用法,是的,网上也有很多教程。您基本上可以像 shell 参数一样提供它们。这是我的 Makefile 的一部分(来自 RInside 的示例),我们在其中查询 R 到命令行标志等:
You have two questions here.
The first question is about command-line argument parsing, and we already had several questions on that on the site. Please do a search for "[r] optparse getopt" to find e.g.
and more.
The second question concerns basic Makefile syntax and usage, and yes, there are also plenty of tutorials around the net. And you basically supply them similar to shell arguments. Here is e.g. a part of Makefile of mine (from the examples of RInside) where we query R to command-line flags etc:
您可以按如下方式定义命名参数:
您还可以使用 Rscript test.R 10 代替 cat test.R | R --slave --args 10
。
You can define named arguments as follows:
You can also use
Rscript test.R 10
instead ofcat test.R | R --slave --args 10
.