I was wondering if it possible to pass parameters to RGui from command prompt in windows. I would like to do something like
RGui myScript.r param1 param2
just like I would do with RScript but I need to display a GUI.
Here is some more info regarding my needs. I want to embedd a gui written in R in my C# forms application. What would happen is I press a button in the form and the application launches a process that calls RGui with my script and some parameters. This has worked fine so far with RScript but now that I am displaying graphics I need R to be in interactive mode. Here is the code I am using:
myProcess.StartInfo.FileName =Pathing.GetUNCPath( r_path) + "\\Rscript";
string script_path=Directory.GetParent(AppDomain.CurrentDomain.BaseDirectory).Parent.Parent.Parent.FullName.ToString();
myProcess.StartInfo.Arguments = Pathing.GetUNCPath(script_path) + "\\display.r " + data_path;
myProcess.StartInfo.UseShellExecute = true;
myProcess.Start();
myProcess.WaitForExit();
(UPDATED) WARNING: This will "work" but it is extremely ill-advised. As far as I can tell, Rgui is not meant to take such script parameters. @Joris pointed out to me the list of acceptable parameters is listed in
Rgui --help
.If you follow the method below, some people will think you are on your way to madness. On the other hand, mad people may think you're a genius. All will agree that you should not do this in stuff that they use.
End of warnings.
If the script is named
.Rprofile
it will be sourced. If you create a.Rprofile
file (or environment variable) that readscommandArgs()
then you can set it up to parse the command line.You will get errors/ignore popups from R. That's to identify that a bad thing has been done.
For what it's worth, this may be on the to-do list for Rstudio: http://support.rstudio.org/help/discussions/problems/823-pass-command-line-parameters-to-r
As said, you normally cannot do that. If you hack into your
Rprofile
orRprofile.site
( see ?Startup for more information, or this site), you can go around that, but the code is not portable to other computers. So if you feel really lucky and daring, you can try to do the following.You add this code to your
Rprofile
file orRprofile.site
(which can be found in the /etc folder of your R install):This will allow you to do :
The --args argument will take care of the popups that @iterator warns for. The code will result in a variable
Args
which is contained in the base environment (which is not .GlobalEnv!). This variable contains all arguments apart from the filename. You can subsequently access that one from your script, eg:If called with
Rgui
orR
, there will also be a variable File that contains the name of the file that has been sourced.Be reminded that changing your rProfile is not portable to other computers. So this is for personal use only. You can also not give -f as a parameter after --args, or you'll get errors.
Edit: We better search for " -f " than "-f" as this can occur in "path/to/new-files/".