R @FULLVERSION@ for Windows
===================

This distribution contains a binary distribution of R-@RVER@ to run on
64-bit versions of Windows 7 and later on x86_64 chips.  
It is designed to be as close as possible to the
implementation on Unix, but see the list of differences below.  The
port was by Guido Masarotto, Brian Ripley and Duncan Murdoch.


Installation
============

The distribution is distributed as an installer @RWVER@-win.exe.  Just
run this for a Windows-style installer.

For more details, including command-line options for the installer and
how to uninstall, see the rw-FAQ.  If you are reading this as part of
an installed version of R, that is both a file rw-FAQ in this directory
and a file doc\html\rw-FAQ.html.


Usage
=====

GUI:

Rgui.exe runs as a standard Windows GUI executable and provides an R
console in its own window.  It takes the standard R command-line
arguments; these are most easily set by making a shortcut to
...\@RWVER@\bin\x64\Rgui.exe and adding the
arguments in the Target field.  Set the 'Start in' field of the
shortcut to the directory you want to use as the working directory
(where workspaces and files are saved to and loaded from).  The
installer creates a shortcut on the desktop for you (by default).

You have a choice of interface: SDI (separate windows) or MDI
(multiple child windows in one large window).  MDI is the default:
select SDI by adding --sdi in the Target field: this can also be
selected from the installer.

Command-line editing is available: see Help | Console for details.

The menus provide shortcuts to some R commands such as help, help.start,
apropos, ls, load, save.image, search.

The 'load' menu items (Source R code, Display file, Load Workspace)
keep track of the directory that was last used, and start their dialog
boxes from that directory the next time they are used.  That directory
can be made the working directory by the File | Change dir menu item.
All the 'save' menu items start dialog boxes at the current working
directory: this includes 'Save Workspace' and the various ways to save
graphics, as well as saving the workspace at the end of the session.

Note that a few of the text help files use accented Western European.
To see all the characters you must use an appropriate font
(European-language True Type fonts should be OK).  To check if your
preferred font has these characters, try "help(text)" and look at the
examples.


TERMINAL/BATCH:

Rterm.exe will run from a command line such as a 'Command Prompt'
window running the standard shell, cmd.exe, as well as the ports of
bash and tcsh that we use.  Its primary purpose is to allow batch
operation, but it does provide all the facilities needed for
interactive use, including command-line editing (see the file
README.Rterm).

Batch use: At its simplest, Rterm.exe can be used in a batch mode by
commands like

Rterm.exe --no-restore --no-save < infile > outfile 2>&1

although users will probably want to set up simple .bat or .cmd files
to run batch jobs. You can also use it via R CMD BATCH: see ?BATCH or
R CMD BATCH --help.

Use with ESS: You can use Rterm.exe to provide inferior R-mode in ESS
under NTEmacs.  The pager is automatically set to "console" so text
help will be displayed in emacs buffers.


GRAPHICS:

The screen device is called windows().  This is launched
automatically, and can also be launched explicitly by windows() from
both Rgui.exe and Rterm.exe.  A printer device can be opened using
win.print(), and graphs drawn as metafiles by win.metafile().

The graphics device pops up a separate window which has two menus.  The
device's File menu allows saving or printing or to run dev.off().

The History menu allows the recording of plots.  When plots have been
recorded they can be reviewed by PgUp and PgDn, saved and replaced.
Recording can be turned on automatically (the Recording item on the
list) or individual plots can be added (Add or the INS key).

The whole plot history can be saved to or retrieved from an R variable
in the global environment.
  The format of recorded plots may change between R versions.
  Recorded plots should NOT be used as a permanent
  storage format for R plots.

There is only one graphics history shared by all the windows devices.


Customization
=============

Environment variables can be set as NAME=value at the end of the
command line, including in a shortcut.  They can also be set (as
NAME=value lines) in the file .Renviron in the working directory, or
if that does not exist HOME\.Renviron.

Many aspects of the console (size, appearance, font, font size,
colours) can be customized by editing the file etc\Rconsole, and a
copy with a user's settings can be put in her HOME directory or in the
working directory.  (The exact sequence is to search the directory
pointed to by the first found of the environment variables R_USER then
HOME, then the Windows "personal" directory (typically
'C:\Users\username\My Documents' on recent versions of Windows) then
{HOMEDRIVE}{HOMEPATH} then the working directory, finally R_HOME\etc.
This also applies to .Renviron and other uses of 'HOME' in our
documentation.)  The file contains a description of the settings that
can be altered.  See also ?Rconsole.

An alternative way to edit the Rconsole file is to use the GUI
preferences item on the Edit menu in Rgui.exe.  This can change some
of the settings (for example colours, font and window sizes) on the
current running console.

The mapping between Windows fonts and the font number used in R's
graphics can be set by editing the file etc\Rdevga, and a copy with a
user's settings can be put in the HOME or working directory (see the
description of Rconsole).  This mapping applies to both the screen
device and the printer device.

Many R defaults can be set in the file R_HOME\etc\Rprofile or a user's
file .Rprofile.  In particular:

- The pager is set by options(pager=).  The default is "internal"
  which brings up a separate console-like window.  The internal pager
  can use a single window or a different window for each topic shown
  (configurable in Rconsole).  Other possibilities we have used are
  "notepad" and "console" to list the files in the console (Rgui.exe)
  or terminal window (Rterm.exe).


Adding packages
===============

Binaries for many packages are available under
CRAN/bin/windows/contrib.  These are zip files which should be
unpacked in @RWVER@\library.  The simplest option is use the items on
the Packages menu to install from a zip file or to download from CRAN.

Private libraries of packages can be used and can be specified by the
environment variable R_LIBS.  (Separate directories by ";" in this
version.)  They will not be linked to HTML help.  In more detail, to
use packages installed in directory R:\libraries\gm, set

R_LIBS=R:\libraries\gm

in the environment or your .Renviron file or on the command line, or
add the line

.libPaths("R:/libraries/gm")

to your .Rprofile or at the end of R_HOME\etc\Rprofile.

To install a package from source code you need the source-package
distribution installed from @RWVER@-win32.exe (but not the R sources).
The 'R Installation and Administration' manual contains detailed
instructions.


Differences from Unix versions of R
===================================

- R can be interrupted by Esc in Rgui and by Ctrl-C or Ctrl-Break in Rterm:
  Ctrl-C is used for copying in the GUI version.  C-c C-c works
  under NTemacs.

- Command-line editing is always available, but is simpler than
  under readline-based input on Unix.  For Rgui.exe, see the menu item
  'Help | Console', for Rterm.exe the file README.Rterm.

- Paths to files can be specified with "/" or "\\".

- system() is enhanced here and does not automatically use a shell.
  See its help page and that of shell().

- graphics device bmp() is available in this version.


Using package tcltk
===================

The package tcltk supports building graphical interfaces with Tcl/Tk.
"Support Files for Package tcltk" needs to be selected from the
installer for this to work; alternatively you can use an existing
installation of Tcl/Tk 8.6.x by following the instructions in the
rw-FAQ.


Building From Source
====================

See the 'R Installation and Adminstration' Manual
(doc\manual\R-admin.html).


Feedback
========

Please send comments and bug reports to

	R-windows@r-project.org

