From goedman at mac.com  Fri Jul 15 06:39:01 2005
From: goedman at mac.com (Rob J Goedman)
Date: Thu, 14 Jul 2005 21:39:01 -0700
Subject: [Rd] Computer algebra in R - would that be an idea??
In-Reply-To: <C83C5E3DEEE97E498B74729A33F6EAEC01AD9A34@DJFPOST01.djf.agrsci.dk>
References: <C83C5E3DEEE97E498B74729A33F6EAEC01AD9A34@DJFPOST01.djf.agrsci.dk>
Message-ID: <86262F64-CB17-4CB4-9281-819EBA83D33E@mac.com>

A really simple way to play with R & yacas is by using the examples  
in the subdir
'embed' of yacas-1.0.57.

After building yacas (on Mac OS in my case):

 > res<-system("~/Projects/yacas-1.0.57/embed/example2", intern=T)
 > res
[1] "Cos(x);"

or

 > res<-system("~/Projects/yacas-1.0.57/embed/example1 'D(x){{Sin 
(x),Cos(x)}, {Sin(2*x),-Cos(x)}}'", intern=T)
 > res
[1] "Input> D(x){{Sin(x),Cos(x)}, {Sin(2*x),-Cos(x)}}"
[2] "Output> {{Cos(x),-Sin(x)},{2*Cos(2*x),Sin(x)}};"

or

 > system("yacas -pc --execute '[Echo(D(x)Sin(x));Exit();]'")
Cos(x)

or

 > system("echo 'Example()' | yacas_client")
In> Example()
Current example : Integrate(x,a,b)Sin(x);

Integrate a function.

Out> Cos(a)-Cos(b)
In>
 > system("echo 'Type(%)' | yacas_client")
In> Type(%)
Out> "-"
In>

This last example does show the yacas server stays alive between  
calls from R. yacas_client is a script.
Maybe that approach also works for maxima?

I wonder how difficult it would be to translate expressions back and  
forth from R to yacas in either R
or C++. And maybe strip 'In>' and 'Out>' like parts.

Rob

On Jul 14, 2005, at 5:21 PM, S?ren H?jsgaard wrote:

> Perhaps, this is the wrong mailing list, but I've been thinking  
> about calling e.g. maxima from R through some kind of wrapper. On  
> windows, maxima can be invoked through a file called maxima.bat  
> which opens a simple 'dos terminal' in which maxima is running. A  
> simple way of interfacing R and maxima would be through a function  
> which 'copies' a text string into such a dos terminal with maxima  
> running and copies the output back into R. That particular task is  
> something which one might want to be able to do with several other  
> programs too... A way of doing this would be through the system()  
> and/or shell() functions where input and output can be redirected  
> to/from the program called, e.g. maxima. The problem is, that system 
> ()/shell() will start maxima, execute the submitted code and  
> terminate maxima. As I understand it, RDCOMClient provides a way of  
> getting a 'handle' on such a program provided that the program is  
> written in a specific way - something to do with COM. However, I  
> wonder if it would be possible to write a general R function, (e.g.  
> called dynamicshell()) which would provide a handle on such an  
> application and to which one could send commands and retrieve  
> output without shutting the application down. That is, essentially,  
> a programatic form of 'copy and paste' in two directions... Is  
> there anything in the way R is constructed that prevents that such  
> a function could be written, and if so can anyone explain to me why  
> and/or point me to a reference explaining why.
>
> Best regards
> S?ren
>
> ________________________________
>
> Fra: Simon Blomberg [mailto:Simon.Blomberg at anu.edu.au]
> Sendt: on 13-07-2005 04:42
> Til: Gabor Grothendieck; S?ren H?jsgaard
> Cc: Duncan Murdoch; r-devel at stat.math.ethz.ch
> Emne: Re: [Rd] Computer algebra in R - would that be an idea??
>
>
>
> Another approach might be to construct a wrapper for Aldor code,  
> along the
> lines of .Fortran and .C. Aldor is the extension language for AXIOM
> http://www.aldor.org/, and there is a symbolic algebra library  
> available
> for Aldor http://www-sop.inria.fr/cafe/Manuel.Bronstein/algebra, which
> ships with the Aldor compiler. Of course, I am much better at  
> thinking up
> these ideas than implementing them myself. :-)
>
> Simon.
>
>
> At 11:36 AM 13/07/2005, Gabor Grothendieck wrote:
>
>> I don't know which free system is best.  I have mainly used Yacas
>> but my needs to date have been pretty minimal so I suspect
>> any of them would have worked.
>>
>> Eric's COM solution, once I have it figured out, will likely get me
>> to the next step on Windows.  I did some googling around and
>> found this:
>>
>> http://www.koders.com/python/ 
>> fidDCC1B0FBFABC770277A28835D5FFADC9D25FF54E.aspx
>>
>> which is a python interface to Yacas which may give some ideas
>> on how to interface it to R.
>>
>>
>> On 7/12/05, S?ren H?jsgaard <Soren.Hojsgaard at agrsci.dk> wrote:
>>
>>> Personally, I like Maxima better than Yacas, but in both cases the
>>>
>> solution (at least a minimal one) should be doable: A small  
>> program which
>> pipes R commands into a terminal running Maxima/Yacas and taking the
>> output back into R. I am not much into the technical details, but  
>> isn't
>> that what can be done with the COM automatation server on  
>> Windows?? (I
>> don't know what the equivalent would be on unix?).
>>
>>> Best regards
>>> S?ren
>>>
>>> ________________________________
>>>
>>> Fra: Simon Blomberg [mailto:Simon.Blomberg at anu.edu.au]
>>> Sendt: on 13-07-2005 01:52
>>> Til: Duncan Murdoch; Gabor Grothendieck
>>> Cc: S?ren H?jsgaard; r-devel at stat.math.ethz.ch
>>> Emne: Re: [Rd] Computer algebra in R - would that be an idea??
>>>
>>>
>>>
>>> I would use such a symbolic math package for R. I have dreamt of an
>>> open-source solution with functionality similar to mathStatica.
>>> http://www.mathstatica.com/ Is yacas the best system to consider?  
>>> What
>>> about  Maxima http://maxima.sourceforge.net/, which is also GPL,  
>>> or maybe
>>> Axiom http://savannah.nongnu.org/projects/axiom, which has a  
>>> modified BSD
>>> license?
>>>
>>> Cheers,
>>>
>>> Simon.
>>>
>>> At 01:25 AM 13/07/2005, Duncan Murdoch wrote:
>>>
>>>> On 7/12/2005 10:57 AM, Gabor Grothendieck wrote:
>>>>
>>>>> On 7/12/05, S?ren H?jsgaard <Soren.Hojsgaard at agrsci.dk> wrote:
>>>>>
>>>>>>> From time to time people request symbolic computations beyond  
>>>>>>> what
>>>>>>>
>>>> D() and deriv() etc can provide. A brief look at the internet  
>>>> shows that
>>>> there are many more or less developed computer algebra packages  
>>>> freely
>>>> available. Therefore, I wondered if it would be an idea to try to
>>>> 'integrate' one of these packages in R, which I guess can be  
>>>> done in more
>>>> or less elegant ways... I do not know any of the computer  
>>>> algebra people
>>>> around the World, but perhaps some other people from the R- 
>>>> community do
>>>> and would be able to/interested in establishing such a  
>>>> connection...
>>>>
>>>>>
>>>>>
>>>>> Coincidentally I asked the yacas developer about this just  
>>>>> yesterday:
>>>>>
>>>>>
>>>>
>>>>
>> http://sourceforge.net/mailarchive/forum.php? 
>> thread_id=7711431&forum_id=2216
>>
>>>>
>>>> It sounds like developing an R package to act as a wrapper would  
>>>> be the
>>>> best approach.  I didn't see documentation for their API (the  
>>>> exports of
>>>> their DLL), but I didn't spend long looking.
>>>>
>>>> Duncan Murdoch
>>>>
>>>> ______________________________________________
>>>> R-devel at r-project.org mailing list
>>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>>>
>>>
>>> Simon Blomberg, B.Sc.(Hons.), Ph.D, M.App.Stat.
>>> Centre for Resource and Environmental Studies
>>> The Australian National University
>>> Canberra ACT 0200
>>> Australia
>>> T: +61 2 6125 7800 email: Simon.Blomberg_at_anu.edu.au
>>> F: +61 2 6125 0757
>>> CRICOS Provider # 00120C
>>>
>>>
>>>
>>>
>>>
>>>
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>



[Rd] Computer algebra in R - would that be an idea??
Rob J Goedman