From ripley at stats.ox.ac.uk  Fri Apr 27 16:20:24 2007
From: ripley at stats.ox.ac.uk (Prof Brian Ripley)
Date: Fri, 27 Apr 2007 15:20:24 +0100 (BST)
Subject: [Rd] system() in packages
In-Reply-To: <3E7A71D7-49A5-4C2E-A365-9D2387D76D3B@soc.soton.ac.uk>
References: <3E7A71D7-49A5-4C2E-A365-9D2387D76D3B@soc.soton.ac.uk>
Message-ID: <Pine.LNX.4.64.0704271517120.29708@gannet.stats.ox.ac.uk>

The first comment is that will only work on Unix-alikes, since '|' needs a 
shell.

So, if this is on a Unix-alike you need to establish if the program is in 
the path at run time and cache the result.  I have no idea if this would 
actually work, but for example system('gp --version') might provide a 
suitable test.

On Fri, 27 Apr 2007, Robin Hankin wrote:

> Hello
>
> Quite often I need higher precision, or larger numbers,
>  than IEEE double precision allows.  One strategy I sometimes
> use is to use system() to call pari/gp, which is not constrained by
> IEEE.
>
> [pari/gp is a GPL high-level mathematical programming language
> geared towards pure mathematics]
>
> Two of my packages contain lines like the following:
>
> > system(" echo '1.12^66' | gp -q f",intern=TRUE)
> [1]
> "1771.697189476241729649767636564084681203806302318041262248838950177194
> 116346432205160921568393661760"
>
> Note the high precision of the answer.
>
> My question is, how to deal with the possibility that pari/gp is not
> installed?
>
> If the system cannot find gp for some reason, I get:
>
> > system(" echo '1.12^66' | gp -q f",intern=TRUE)
> sh: line 1: gp: command not found
> character(0)
> >
>
> What's the recommended way to handle this eventuality gracefully?  The
> functions that do use pari/gp have "pure" R equivalents (but much
> slower and less accurate)  so I want users to be able to install the
> package without pari/gp.
>
>
> --
> Robin Hankin
> Uncertainty Analyst
> National Oceanography Centre, Southampton
> European Way, Southampton SO14 3ZH, UK
>  tel  023-8059-7743
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



[Rd] system() in packages
Prof Brian Ripley