Rev 11368 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html lang="en"><head><meta name="generator" content="HTML Tidy, see www.w3.org"><title>R for Windows FAQ</title><meta http-equiv="Content-Type" content="text/html"><meta name="description" content="R for Windows FAQ"><meta name="generator" content="makeinfo 4.0"><link href="http://texinfo.org/" rel="generator-home"><title>R for Windows FAQ</title></head><body><h1 align="center">R for Windows FAQ</h1><h2>Version for <tt>rw1020</tt></h2><address>B. D. Ripley</address><hr><p>...Table of Contents... <a name="Top"></a> </p><hr><a name="Introduction"></a><h1>1 Introduction</h1><p>This FAQ is for the Windows port of R: it describes featuresspecific to that version. The main R FAQ can be found at</p><pre><a href="http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html">http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html</a>.</pre><p>The information here applies only to recent versions of R forWindows, (<code>rw1020</code> or later); the current version isoften called something like <code>rw1020</code> (although notofficially).</p><hr><a name="Installation%20and%20Usage"></a><h1>2 Installation and Usage</h1><a name="Where%20can%20I%20find%20the%20latest%20version%3f"></a><h2>2.1 Where can I find the latest version?</h2><p>Go to any CRAN site (see <a href="http://cran.r-project.org/mirrors.html">http://cran.r-project.org/mirrors.html</a> for a list), navigate tothe <code>bin/windows/windows-NT/base</code> directory and collectthe files you need. You will need at least the files</p><pre>rwXxxxb1.zip rwXxxxb2.ziprwXxxxh.zip (text help) or rwXxxxch.zip (Compiled HTML help)</pre><p>and you may want <code>rwXxxxwh.zip</code> (the Windows helpfiles) or <code>rwXxxxw.zip</code> (the HTML format help files),<code>rwXxxxl.zip</code> (the LaTeX format help files, used foroffline printing), or <code>rwXxxxd?.zip</code> (the draft manuals,in PDF).</p><p>Optionally, you can download the installer, <code>rwinst.exe</code>. <a name="How%20do%20I%20install%20R%20for%20Windows%3f"></a></p><h2>2.2 How do I install R for Windows?</h2><p>First, you need Windows 95/98/ME/NT4/2000: Windows 3.11+win32swill not work. Your file system must allow long file names (as islikely except perhaps for some network-mounted systems).</p><p>The simplest way is to run the installer (double-click on theicon for <code>rwinst.exe</code> and navigate its wizard-likepages). Alternatively, choose a location and unzip the zip files(with a tool that preserves long file names and the directorystructure: we recommend the INFO-ZIP project's <code>unzip</code>).All the files will unpack into a directory called <code>rwXxxx</code>, for some <code>Xxxx</code>.</p><p>Choose a working directory for R. Make a shortcut to <code>rwXxxx\bin\Rgui.exe</code> on your desktop or somewhere on theStart menu file tree. Right-click the shortcut, selectProperties... and change the `Start in' field to your workingdirectory.</p><p>You may also want to add command-line arguments at the end ofthe Target field, for example <code>--max-mem-size=40M</code>. Youcan also set environment variables at the end of the Target field,for example <code>R_LIBS=e:/R/library</code>. <a name="How%20do%20I%20run%20it%3f"></a></p><h2>2.3 How do I run it?</h2><p>Just double-click on the shortcut you prepared atinstallation.</p><p>If you want to set up another project, make a new shortcut oruse the existing one, and change the `Start in' field of theProperties. <a name="How%20can%20I%20keep%20workspaces%20for%20different%20projects%20in%20different%20directories%3f"></a></p><h2>2.4 How can I keep workspaces for different projects indifferent directories?</h2><p>Create a separate shortcut for each project: see Q2.3. All thepaths to files used by R are relative to the starting directory, sosetting the `Start in' field automatically helps separate projects.<a name="How%20do%20I%20print%20from%20R%3f"></a></p><h2>2.5 How do I print from R?</h2><p>It depends what you want to print.</p><ul><li>You can print the graphics window from its menu or by using<code>dev.print()</code>.</li><li>You can print from the R console or pager by <code>File |Print</code>. (This will print the selection if there is one,otherwise the whole console or pager contents.)</li><li>You can print help files from the pager or HTML browser.</li><li>If you have configured <code>RHOME\bin\helpPRINT.bat</code> andhave latex installed you can print help files by <code>help(fn_name, offline=TRUE)</code>.</li></ul><a name="Can%20I%20use%20R%20BATCH%3f"></a><h2>2.6 Can I use <code>R BATCH</code>?</h2><p>Yes, if you have Perl installed. The Windows analogue is <code>Rcmd BATCH</code>: use <code>Rcmd BATCH --help</code> for fulldetails.</p><p>Otherwise you can set up a batch file using <code>Rterm.exe</code>. A sample batch file might contain (as oneline)</p><pre>path_to_R\bin\Rterm.exe --no-restore --no-save < %1 > %1.out</pre><a name="Can%20I%20use%20rwXxxx%20with%20ESS%20and%20emacs%3f"></a><h2>2.7 Can I use rwXxxx with ESS and emacs?</h2><p>Yes. The latest versions of ESS (e.g. 5.1.18) come with supportfor this version of R, and there is support for interrupting the Rprocess from ESS (by <code>C-c C-c</code>).</p><p>For help with ESS, please send email to <a href="mailto:ESS-help@stat.ethz.ch">ESS-help@stat.ethz.ch</a>, not the Rmailing lists. <a name="What%20are%20HOME%20and%20working%20directories%3f"></a></p><h2>2.8 What are HOME and working directories?</h2><p>Several places in the documentation use these terms.</p><p>The working directory is the directory from which <code>Rgui</code> or <code>Rterm</code> was launched, unless a shortcutwas used when it is given by the `Start in' field of the shortcut'sproperties. You can find this from R code by the call <code>getwd()</code>.</p><p>The home directory is set as follows:<br>If environment variable <code>R_USER</code> is set, its value isused.<br>Otherwise if environment variable <code>HOME</code> is set, itsvalue is used.<br>Otherwise if environment variables <code>HOMEDRIVE</code> and<code>HOMEPATH</code> are set, the value is <code>${HOMEDRIVE}${HOMEPATH}</code>.<br>If all of these fail, the current working directory is used.</p><p>You can find this from R code by <code>Sys.getenv("R_USER")</code>.</p><hr><a name="Packages"></a><h1>3 Packages</h1><a name="Can%20I%20install%20packages%20(libraries)%20in%20this%20version%3f"></a><h2>3.1 Can I install packages (libraries) in this version?</h2><p>Yes, of course. The easy way is to see if a pre-compiled binaryversion of the package is available: look on CRAN at <code>bin/windows/windows-NT/contrib</code>. If there is, download thezip file and unpack it in the <code>rwXxxx\library</code>directory, using <code>unzip</code> or similar, or using theinstaller <code>rwinst.exe</code>. Perhaps even easier is to usethe R function <code>install.packages()</code>: check out its helppage.</p><p>If there is not a binary version or that is not up-to-date oryou prefer compiling from source, get <code>rwXxxxsp.zip</code>from the distribution (see Q1.1) and unpack it in <code>rwXxxx</code>. Then <code>cd src\gnuwin32</code> and read <code>README.packages</code>. You will need to collect and installseveral tools to use this. Once you have done so, installation iseasy: just run <code>Rcmd INSTALL pkgname</code>. To check thepackage (run all the examples on its help pages and in its testsuite, if any) use <code>Rcmd check pkgname</code>. <a name="I%20don't%20have%20permission%20to%20write%20to%20the%20rwXxxx%2flibrary%20directory"></a></p><h2>3.2 I don't have permission to write to the <code>rwXxxx/library</code> directory.</h2><p>You can install packages anywhere and use the environmentvariable <code>R_LIBS</code> to point to the library location(s).You can also set the R variable <code>.lib.loc</code> in your<code>.Rprofile</code> or when running R.</p><p>Suppose your packages are installed in <code>p:\mylibs</code>.Then you can EITHER</p><pre>set the environment variable R_LIBS to p:\mylibs</pre><p>OR put in the <code>.Rprofile</code> in the working directory oryour home directory</p><pre>.lib.loc <- c("p:/mylibs", .Library)</pre><p>OR use a package by, e.g.</p><pre>library(MASS, lib.loc="p:/mylibs")</pre><p>How you set an environment variable is system specific: inWindows 9x you can set them in autoexec.bat or in an MS-DOS windowfrom which you launch <code>Rgui</code> / <code>Rterm</code>. UnderWindows NT/2000 you can use the control panel or the properties of`My Computer'. You can also set them on the command line, forexample in the shortcut you could have</p><pre>path_to_R\bin\Rgui.exe --vsize=10M R_LIBS=e:/R/library</pre><p>and you can set variables in a file <code>.Renviron</code> inthe working directory or your home directory, for example</p><pre>R_LIBS=e:/R/libraryR_VSIZE=10MR_NSIZE=400k</pre><p>The order of precedence is the command line (flags beforevariables) then <code>.Renviron</code> then the inheritedenvironment. <a name="The%20packages%20I%20installed%20do%20not%20appear%20in%20the%20HTML%20help%20system"></a></p><h2>3.3 The packages I installed do not appear in the HTML helpsystem.</h2><p>HTML help only works for packages installed in <code>rwXxxx\library</code>.</p><p>To update the HTML help files after you have installed a binarypackage, run at the R prompt.</p><pre>> link.html.help()</pre><p>(Using <code>install.packages()</code> does this for you. Thesource-code installation also does this automatically, and if youhave that installed you can use (preferably)</p><pre>cd rwXxxx\src\gnuwin32\helpmake indices</pre><p>instead.) <a name="My%20functions%20are%20not%20found%20by%20the%20HTML%20help%20search%20system."></a></p><h2>3.4 My functions are not found by the HTML help searchsystem.</h2><p>The following conditions need to hold for functions in a packageyou installed.</p><ul><li>the package is installed in <code>rwXxxx\library</code>.</li><li>the package contains a <code>CONTENTS</code> file in top-leveldirectory.</li><li>you updated the indices as described in the answer to Q3.3after installing the package.</li></ul><p>If those all hold true, this works for us. <a name="Package%20TclTk%20does%20not%20work."></a></p><h2>3.5 Package TclTk does not work.</h2><p>For package tcltk to work (try <code>demo(tkdensity)</code> or<code>demo(tkttest)</code>) you need to have Tcl installed.Download <code>tcl832.exe</code> (or use <code>tcl831.exe</code> ifyou already have it) from <<code>dev.scriptics.com</code>>and install it. (That will put the <code>bin</code> directorycontaining the Tcl and Tk DLLs in your path). You then need to setthe environment variable <code>TCL_LIBRARY</code>, to somethinglike <code>c:/Program Files/Tcl/lib/tcl8.3</code>. (The startupcode for the package will warn you if this is unset, and Q3.2explains how to set them.)</p><hr><a name="Windows%20Features"></a><h1>4 Windows Features</h1><a name="What%20should%20I%20expect%20to%20behave%20differently%20from%20the%20Unix%20version%20of%20R%3f"></a><h2>4.1 What should I expect to behave differently from the Unixversion of R?</h2><ul><li>R commands can be interrupted by <Esc> in <code>Rgui.exe</code> and <Ctrl-break> or <Ctrl-C> in <code>Rterm.exe</code>: <Ctrl-C> is used for copying in the GUIversion.</li><li>Command-line editing is always available, but is simpler thanthe readline-based editing on Unix. For <code>Rgui.exe</code>, themenu item `Help | Console' will give details.</li><li>Using <code>help.start()</code> does not automatically sendhelp requests to the browser: use <code>options(htmlhelp=T)</code>to turn this on.</li><li>The HTML help system can only access packages installed in thestandard place.</li><li>Paths to files (e.g. in <code>source()</code>) can be specifiedwith either "/" or "\\".</li><li><code>system()</code> is slightly different: see its help pageand that of <code>shell()</code>.</li></ul><a name="I%20hear%20about%20some%20nifty%20features.%20Please%20tell%20me%20about%20them!"></a><h2>4.2 I hear about some nifty features: please tell me aboutthem!</h2><p>You have read the <code>README</code>? There are file menus onthe R console, pager and graphics windows. You can source and savefrom those menus, and copy the graphics to <code>png</code>, <code>jpeg</code>, <code>bmp</code>, <code>postscript</code> or <code>metafile</code>. There are right-click menus giving shortcuts tomenu items, and optionally toolbars with buttons giving shortcutsto frequent operations.</p><p>If you resize the R console the <code>options(width=)</code> isautomatically set to the console width (unless disabled in theconfiguration file).</p><p>The graphics has a history mechanism. As the README says:</p><blockquote>`The History menu allows the recording of plots. Whenplots have been recorded they can be reviewed by <PgUp> and<PgDn>, saved and replaced. Recording can be turned onautomatically (the Recording item on the list) or individual plotscan be added (Add or the <INS> key). The whole plot historycan be saved to or retrieved from an R variable in the globalenvironment.<p>There is only one graphics history shared by all the windowsdevices.'</p></blockquote><p>The R console and graphics windows have configuration filesstored in the <code>RHOME\etc</code> directory called <code>Rconsole</code> and <code>Rdevga</code>; you can keep personalcopies in your <code>HOME</code> directory. They contain commentswhich should suffice for you to edit them to your preferences. Formore details see <code>?Rconsole</code>. There is a Preferenceseditor invoked from the <code>Edit</code> menu which can be used toedit the file <code>Rconsole</code>.</p><hr><a name="Workspaces"></a><h1>5 Workspaces</h1><a name="My%20workspace%20gets%20saved%20in%20a%20strange%20place.%20how%20do%20I%20stop%20this%3f"></a><h2>5.1 My workspace gets saved in a strange place: how do I stopthis?</h2><p>Have you changed the working directory?: see Q5.2. <a name="How%20do%20I%20store%20my%20workspace%20in%20a%20different%20place%3f"></a></p><h2>5.2 How do I store my workspace in a different place?</h2><p>Use the `File | Change Dir' menu item to select a new workingdirectory: this defaults to the last directory you loaded a filefrom. The workspace is saved in the working directory. You can alsosave a snapshot of the workspace from the `Save Workspace' menuitem. <a name="Can%20I%20load%20workspaces%20saved%20under%20Unix%2fGNU-Linux%3f"></a></p><h2>5.3 Can I load workspaces saved under Unix/GNU-Linux?</h2><p>Yes. The converse (saving on Windows, loading on Unix) alsoworks.</p><hr><a name="The%20R%20Console%20and%20Fonts"></a><h1>6 The R Console and Fonts</h1><a name="I%20would%20like%20to%20be%20able%20to%20use%20Japanese%20fonts"></a><h2>6.1 I would like to be able to use Japanese fonts</h2><p>for example, in the console and to annotate graphs.</p><p>We believe this is possible by setting suitable fonts in theRconsole and Rdevga configuration files (see Q4.2). You can specifyadditional fonts in Rdevga, and use them by</p><pre>par(font=, font.lab=, font.main=, font.sub=)</pre><p>Nineteen fonts are specified (as 1 to 19) by default: you canadd to these (up to 13 more) or replace them. <a name="I%20don't%20see%20characters%20with%20accents%20at%20the%20R%20console"></a></p><h2>6.2 I don't see characters with accents at the R console, forexample in ?text.</h2><p>You need to specify a font in Rconsole (see Q4.2) that supportslatin1 encoding. The default, <code>Courier New</code>, does on oursystems, as does <code>FixedSys</code>. This may be a problem inother locales, especially for non-Western European languages. <aname="The%20output%20to%20the%20console%20seems%20to%20be%20delayed"></a></p><h2>6.3 When using Rgui the output to the console seems to bedelayed.</h2><p>This is deliberate: the console output is buffered andre-written in chunks to be less distracting. You can turn bufferingoff or on from the Misc menu or the right-click menu:<Ctrl-W> toggles the setting.</p><p>If you are sourcing R code or writing from a function, there isanother option. A call to the R function <code>flush.console()</code> will write out the buffer and so update theconsole. <a name="Long%20lines%20seem%20to%20be%20truncated."></a></p><h2>6.4 Long lines in the console or pager are truncated.</h2><p>They only <strong>seem</strong> to be truncated: that $ at theend indicates you can scroll the window to see the rest of themessage. Use the horizontal scrollbar or the <CTRL+arrow>keys to scroll horizontally.</p><hr><a name="Building%20from%20Source"></a><h1>7 Building from Source</h1><a name="How%20can%20I%20compile%20R%20from%20source%3f"></a><h2>7.1 How can I compile R from source?</h2><p>Get the R sources. Suppose you want to compile R-1.2.0.</p><pre>tar zxvf R-1.2.0.tgzcd R-1.2.0cd src\gnuwin32</pre><p>Now read the <code>INSTALL</code> file and set up all the toolsneeded. Then you can just use <code>make</code>, sit back and wait.(A complete build takes about 15 minutes on a 300MHz PII with afast local disc.)</p><p>You may need to compile under a case-honouring file system: wefound that a <code>samba</code>-mounted file system (which maps allfile names to lower case) did not work. <a name="How%20do%20I%20debug%20code%20that%20I%20have%20compiled%20and%20dyn.load-ed%3f"></a></p><h2>7.2 How do I debug code that I have compiled anddyn.load-ed?</h2><p>First, build a version of the R system with debugginginformation by</p><pre>make cleanmake DEBUG=T</pre><p>and make a debug version of your package by</p><pre>make pkgclean-mypkgmake DEBUG=T pkg-mypkg</pre><p>Then you can debug by</p><pre>gdb /path/to/rwXxxx/bin/Rgui.exe</pre><p>However, note</p><ul><li>gdb will only be able to find the source code if we run in thelocation where the source was compiled(<code>rwXxxx/src/gnuwin32</code> for the main system, <code>rwXxxx/src/library/mypkg/src</code> for a package), unless toldotherwise by the <code>directory</code> command. It is mostconvenient to set a list of code locations via <code>directory</code> commands in the file <code>.gdbinit</code> in thedirectory from which <code>gdb</code> is run.</li><li>It is only possible to set breakpoints in a DLL after the DLLhas been loaded. So a way to examine the function <code>tukeyline</code> in package <code>eda</code> might be<pre>gdb ../../../../bin/Rgui.exe(gdb) break WinMain(gdb) run[ stops with R.dll loaded ](gdb) break R_ReadConsole(gdb) continue[ stops with console running ](gdb) continueRconsole> library(eda)(gdb) break tukeyline(gdb) clear R_ReadConsole(gdb) continue</pre><p>Fortran symbols need an underline appended.</p></li><li>Windows has little support for signals, so the usual idea ofrunning a program under a debugger and sending it a signal tointerrupt it and drop control back to the debugger does not workwith <code>mingw32</code> version of <code>gdb</code>. It doesoften work with the <code>cygwin</code> version.</li><li>We have seen examples in debugging problems with Windows eventsthat the <code>cygwin gdb</code> was able to catch but whichterminated the <code>mingw32 gdb</code>.</li></ul><p>If you have an X server available on the PC, there is a versionof <code>DDD</code> available that runs under the cygwin emulationlayer (follow the links at <a href="http://sources.redhat.com/cygwin">http://sources.redhat.com/cygwin</a>) and provides a graphical userinterface to <code>gdb</code>. Another (Windows-native) GUI for<code>gdb</code> is <code>Insight</code>, part of the latest <code>cygwin</code> version of <code>gdb</code> <a name="How%20do%20I%20include%20C++%20code%3f"></a></p><h2>7.3 How do I include C++ code?</h2><p>You need to do two things:</p><p>(a) Write a wrapper to export the symbols you want to call fromR as <code>extern "C"</code>.</p><p>(b) Include the C++ libraries in the link to make the DLL.Suppose <code>X.cc</code> contains your C++ code, and <code>X_main.cc</code> is the wrapper, as in the example in `<em>WritingR Extensions</em>'. Then build the DLL by (<code>gcc</code>)</p><pre>...\bin\Rcmd SHLIB X.cc X_main.cc</pre><p>or (VC++, which requires extension <code>.cpp</code>)</p><pre>cl /MT /c X.cpp X_main.cpplink /dll /out:X.dll /export:X_main X.obj X_main.obj</pre><p>or (Borland C++, which also requires extension <code>.cpp</code>)</p><pre>bcc32 -u- -WDE X.cpp X_main.cpp</pre><p>and call the entry point(s) in <code>X_R</code>, such as <code>X_main</code>. Construction of static variables will occur when theDLL is loaded, and destruction when the DLL is unloaded, usuallywhen R terminates.</p><p>Note that you will not see the messages from this example in theGUI console: see the next section.</p><p>This example is in package <code>cxx_0.0-0.tar.gz</code> in the<code>src/contrib/Devel</code> section on CRAN, and that can becompiled as package in the usual way on Windows. <a name="The%20output%20from%20my%20C%20code%20disappears."></a></p><h2>7.4 The output from my C code disappears. Why?</h2><p>The <code>Rgui.exe</code> console is a Windows application:writing to <code>stdout</code> or <code>stderr</code> will notproduce output in the console. (This will work with <code>Rterm.exe</code>.) Use <code>Rprintf</code> or <code>REprintf</code> instead. These are declared in header file <code>R_ext/PrtUtil.h</code>.</p><p>Note that output from the console is delayed (see <a href="#The%20output%20to%20the%20console%20seems%20to%20be%20delayed">The output to the console seems to be delayed</a>), so that youwill not normally see any output before returning to the R prompt.<a name="The%20output%20from%20my%20Fortran%20code%20disappears."></a></p><h2>7.5 The output from my Fortran code disappears. Why?</h2><p>Writing to Fortran output writes to a file, not the <code>Rgui</code> console. Use one of the subroutines <code>dblepr</code>, <code>intpr</code> or <code>realpr</code> documentedin the <em>`Writing R Extensions'</em> manual. <a name="The%20console%20freezes%20when%20my%20compiled%20code%20is%20running"></a></p><h2>7.6 The console freezes when my compiled code is running.</h2><p>The console, pagers and graphics window all run in the samethread as the R engine. To allow the console etc to respond toWindows events, call <code>R_ProcessEvents()</code> periodicallyfrom your compiled code. If you want output to be updated on theconsole, call <code>R_FlushConsole()</code> and then <code>R_ProcessEvents()</code>.</p><hr width="100%"><address>Last edited 2000 November 25 by Brian Ripley <code><ahref="mailto:ripley@stats.ox.ac.uk">ripley@stats.ox.ac.uk</a></code></address></body></html>