{"id":151,"date":"2015-06-02T11:23:28","date_gmt":"2015-06-02T11:23:28","guid":{"rendered":"http:\/\/blog.ufes.br\/fabiomolinares\/?p=151"},"modified":"2016-02-09T11:38:45","modified_gmt":"2016-02-09T11:38:45","slug":"its-possible-to-read-command-line-parameters-from-an-r-script","status":"publish","type":"post","link":"https:\/\/blog.ufes.br\/fabiomolinares\/2015\/06\/02\/its-possible-to-read-command-line-parameters-from-an-r-script\/","title":{"rendered":"It&#8217;s possible to read command line parameters from an R script?"},"content":{"rendered":"<p>YES!\u00a0yes, it&#8217;s very simple. I will describe the procedure:<\/p>\n<p>1. You should create the file with code R.\u00a0Command-line parameters are accessible via <strong><code>commandArgs()<\/code><\/strong><code>.<\/code><\/p>\n<p>2.\u00a0You can use <strong><code>Rscript<\/code><\/strong>\u00a0on all platforms, including Windows. It will support <strong><code>commandArgs()<\/code><\/strong><code>, for example: In the terminal<\/code><\/p>\n<p class=\"lang-r prettyprint prettyprinted\"><code><span class=\"pln\">Rscript myscript.R arg1 arg2 arg3<\/span><\/code><\/p>\n<p>arg1, arg2 and arg3 are arguments into your R script. If your args are strings with spaces in them, enclose within double quotes. There are two add-on packages on CRAN &#8212; <a href=\"http:\/\/cran.r-project.org\/package=getopt\">getopt<\/a> and <a href=\"http:\/\/cran.r-project.org\/package=optparse\">optparse<\/a> &#8212; which were both written for command-line parsing.<\/p>\n<p class=\"lang-r prettyprint prettyprinted\">Tiny example: script.R<\/p>\n<pre class=\"lang-r prettyprint prettyprinted\"><code><span class=\"pln\">options<\/span><span class=\"pun\">(<\/span><span class=\"pln\">echo<\/span><span class=\"pun\">=<\/span><span class=\"lit\">TRUE<\/span><span class=\"pun\">)<\/span> <span class=\"com\"># To see commands in output file<\/span><span class=\"pln\">\r\nargs <\/span><span class=\"pun\">&lt;-<\/span><span class=\"pln\"> commandArgs<\/span><span class=\"pun\">(<\/span><span class=\"pln\">trailingOnly <\/span><span class=\"pun\">=<\/span> <span class=\"lit\">TRUE<\/span><span class=\"pun\">) \r\n<\/span><span class=\"pln\"># trailingOnly=TRUE means that only your \r\n# arguments are returned\r\nprint<\/span><span class=\"pun\">(<\/span><span class=\"pln\">args<\/span><span class=\"pun\">) <\/span>\r\n<span class=\"pln\">\r\nstart_date <\/span><span class=\"pun\">&lt;-<\/span><span class=\"pln\"> as.Date<\/span><span class=\"pun\">(<\/span><span class=\"pln\">args<\/span><span class=\"pun\">[<\/span><span class=\"lit\">1<\/span><span class=\"pun\">]) # First argument<\/span><span class=\"pln\">\r\nfigure_name <\/span><span class=\"pun\">&lt;-<\/span><span class=\"pln\"> args<\/span><span class=\"pun\">[<\/span><span class=\"lit\">2<\/span><span class=\"pun\">] # Second argument<\/span><span class=\"pln\">\r\nn <\/span><span class=\"pun\">&lt;-<\/span><span class=\"pln\"> as.integer<\/span><span class=\"pun\">(<\/span><span class=\"pln\">args<\/span><span class=\"pun\">[<\/span><span class=\"lit\">3<\/span><span class=\"pun\">]) # Third argument<\/span><span class=\"pln\">\r\nrm<\/span><span class=\"pun\">(<\/span><span class=\"pln\">args<\/span><span class=\"pun\">)<\/span>\r\n\r\n<span class=\"com\"># Some computations:<\/span><span class=\"pln\">\r\nx <\/span><span class=\"pun\">&lt;-<\/span><span class=\"pln\"> rnorm<\/span><span class=\"pun\">(<\/span><span class=\"pln\">n<\/span><span class=\"pun\">)<\/span><span class=\"pln\">\r\npostscript<\/span><span class=\"pun\">(<\/span><span class=\"pln\">paste<\/span><span class=\"pun\">(figure_name<\/span><span class=\"pun\">,<\/span><span class=\"str\">\".eps\"<\/span><span class=\"pun\">,<\/span><span class=\"pln\">sep<\/span><span class=\"pun\">=<\/span><span class=\"str\">\"\"<\/span><span class=\"pun\">))<\/span><span class=\"pln\">\r\nplot<\/span><span class=\"pun\">(<\/span><span class=\"pln\">start_date<\/span><span class=\"pun\">+(<\/span><span class=\"lit\">1L<\/span><span class=\"pun\">:<\/span><span class=\"pln\">n<\/span><span class=\"pun\">),<\/span><span class=\"pln\"> x,type=\"l\"<\/span><span class=\"pun\">)<\/span><span class=\"pln\">\r\ndev.off<\/span><span class=\"pun\">()<\/span><span class=\"pln\">\r\n\r\nsummary<\/span><span class=\"pun\">(<\/span><span class=\"pln\">x<\/span><span class=\"pun\">)<\/span><\/code><\/pre>\n<p>To run:<\/p>\n<pre>Rscript script.R 02\/06\/2015 figure 1000<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>YES!\u00a0yes, it&#8217;s very simple. I will describe the procedure: 1. You should create the file with code R.\u00a0Command-line parameters are accessible via commandArgs(). 2.\u00a0You can use Rscript\u00a0on all platforms, including Windows. It will support commandArgs(), for example: In the terminal Rscript myscript.R arg1 arg2 arg3 arg1, arg2 and arg3 are arguments into your R script. [&hellip;]<\/p>\n","protected":false},"author":38,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"_uag_custom_page_level_css":"","footnotes":""},"categories":[5],"tags":[],"class_list":["post-151","post","type-post","status-publish","format-standard","hentry","category-r"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Fabio Fajardo","author_link":"https:\/\/blog.ufes.br\/fabiomolinares\/author\/fabio-molinares\/"},"uagb_comment_info":97,"uagb_excerpt":"YES!\u00a0yes, it&#8217;s very simple. I will describe the procedure: 1. You should create the file with code R.\u00a0Command-line parameters are accessible via commandArgs(). 2.\u00a0You can use Rscript\u00a0on all platforms, including Windows. It will support commandArgs(), for example: In the terminal Rscript myscript.R arg1 arg2 arg3 arg1, arg2 and arg3 are arguments into your R script.&hellip;","_links":{"self":[{"href":"https:\/\/blog.ufes.br\/fabiomolinares\/wp-json\/wp\/v2\/posts\/151","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.ufes.br\/fabiomolinares\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.ufes.br\/fabiomolinares\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.ufes.br\/fabiomolinares\/wp-json\/wp\/v2\/users\/38"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.ufes.br\/fabiomolinares\/wp-json\/wp\/v2\/comments?post=151"}],"version-history":[{"count":3,"href":"https:\/\/blog.ufes.br\/fabiomolinares\/wp-json\/wp\/v2\/posts\/151\/revisions"}],"predecessor-version":[{"id":154,"href":"https:\/\/blog.ufes.br\/fabiomolinares\/wp-json\/wp\/v2\/posts\/151\/revisions\/154"}],"wp:attachment":[{"href":"https:\/\/blog.ufes.br\/fabiomolinares\/wp-json\/wp\/v2\/media?parent=151"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.ufes.br\/fabiomolinares\/wp-json\/wp\/v2\/categories?post=151"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.ufes.br\/fabiomolinares\/wp-json\/wp\/v2\/tags?post=151"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}