使用rscala在Scala中运行R导致问题

时间:2017-09-28 01:34:47

标签: r scala

我最近遇到了一个名为rscala的R包。 https://darrenjw.wordpress.com/tag/rscala/

我尝试执行该示例,但程序从未完成运行。我不确定可能出错了什么。每当我尝试实例化RClient时,它似乎永远都会运行。请帮忙。

1 个答案:

答案 0 :(得分:1)

对我来说,以下代码运行:

import breeze.stats.distributions._
import breeze.linalg._
import org.ddahl.rscala.RClient

object ScalaToRTest {

  def main(args: Array[String]): Unit = {

    // first simulate some data consistent with a Poisson regression model
    val x = Uniform(50,60).sample(1000)
    val eta = x map { xi => (xi * 0.1) - 3 }
    val mu = eta map { math.exp }
    val y = mu map { Poisson(_).draw }

    // call to R to fit the Poission regression model
    val R = RClient() // initialise an R interpreter
    R.x=x.toArray // send x to R
    R.y=y.toArray // send y to R
    R.eval("mod <- glm(y~x,family=poisson())") // fit the model in R
    // pull the fitted coefficents back into scala
    val beta = DenseVector[Double](R.evalD1("mod$coefficients"))

    // print the fitted coefficents
    println(beta)    
  }

}

输出:

DenseVector(-3.1683714618415855, 0.1031332817387318)

build.sbt

name := "scalaRdemo"

version := "0.1"

scalaVersion := "2.12.3"

scalacOptions ++= Seq("-unchecked", "-deprecation", "-feature")

resolvers ++= Seq(
  "Sonatype Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots/",
  "Sonatype Releases" at "https://oss.sonatype.org/content/repositories/releases/"
)

libraryDependencies += "org.scalanlp" %% "breeze-natives" % "0.13.2"
libraryDependencies += "org.scalanlp" %% "breeze" % "0.13.2"
libraryDependencies += "org.ddahl" %% "rscala" % "2.3.5"