R: trouble making package Ryacas to work on Window

2020-03-24 07:26发布

问题:

I am trying to use the package Ryacas in R. Here what is going on:

> install.packages("Ryacas")
--- Please select a CRAN mirror for use in this session ---
trying URL 'http://www.stats.bris.ac.uk/R/bin/windows/contrib/2.14/Ryacas_0.2-11.zip'
Content type 'application/zip' length 263424 bytes (257 Kb)
opened URL
downloaded 257 Kb

package ‘Ryacas’ successfully unpacked and MD5 sums checked

The downloaded packages are in
    C:\Documents and Settings\yogcal\Local Settings\Temp\RtmpKeuu7m\downloaded_packages

Then I try to load Ryacas:

> library(Ryacas)
Loading required package: XML
C:\Program Files\R\R-2.14.1\library\Ryacas\yacdir\yacas.exe 
   or C:\Program Files\R\R-2.14.1\library\Ryacas\yacdir\scripts.dat 
 not found.
Run yacasInstall() without arguments to install yacas.

So then I run yacasInstall():

> yacasInstall()
trying URL 'http://ryacas.googlecode.com/files/yacas-1.0.63.zip'
Content type 'application/x-zip' length 746009 bytes (728 Kb)
opened URL
downloaded 728 Kb

And then when I try an example:

> library(Ryacas)
> yacas("TeXForm(3 * x^2/(2 * (x + 1)) - (x^3) * 2/(2 * (x + 1))^2)", 
+  retclass = "unquote")
[1] "Starting Yacas!"
Error in socketConnection(host = "127.0.0.1", port = 9734, server = FALSE,  : 
  cannot open the connection
In addition: Warning message:
In socketConnection(host = "127.0.0.1", port = 9734, server = FALSE,  :
  127.0.0.1:9734 cannot be opened
> 

What is going wrong here?

Thanks a lot...

回答1:

Two possibilities: 1) Yacas never got started. (R does not load Yacas for you.) 2) The connection was blocked. Assuming you started Yacas from your operating system, then you need to open up that port using your security admin tools. It's not an R issue but an operating system/firewall issue.

I may be wrong about needing to start Yacas from the Start menu. This is the code for:

runYacas()
### You should not need to type any of what follows. Just use the command above.
runYacas <- function(method = "system", yacas.args = "", yacas.init = "") {
   cmd <- yacasInvokeString(method = method, yacas.args = yacas.args, yacas.init = yacas.init)
   if (.Platform$OS.type == "windows") 
      system(cmd, wait = FALSE, invisible = FALSE)
   else system(cmd, wait = FALSE)
}

Since it seems to call the system, I would try that at your R prompt.



回答2:

One way to zero-in on the problem is to make sure the port is open:

1) Click Windows Start

2) Click All Programs

3) Click Accessories

4) Click Command Prompt to open a DOS window

5) Change the directory to the directory where yacas.exe is located (probably C:\Program Files\yacas\winrel) by typing cd C:\Program Files\yacas\winrel

6) Start yacas with the server by typing yacas --server 9734

7) Yacas should give you the following feedback Accepting requests from port 9734

If everything works up to this point then yacas is running and ready to talk. Now, you can run your R code. If it doesn't work, then you have a problem with yacas.