5

両方を使用した人はいますか?クイックスタートの簡単な例を見ても構いません。

example.fsx スクリプトを実行できます。 acf 関数の副作用がグラフに表示されます。

しかし、ggplot グラフィックを表示する方法がわかりません。

open RProvider.ggplot2
open RProvider.utils

R.setwd @"C:/code/pp/Datasets/output/Kaggle/dontgetkicked"
let f = R.read_csv("measure_DNGtraining.csv")
R.qplot("erase_rate", "components",f)

それはに屈する

val it : SymbolicExpression =
  RDotNet.SymbolicExpression {Engine = RDotNet.REngine;
                              IsClosed = false;
                              IsInvalid = false;
                              IsProtected = true;
                              Type = List;}

私は指示を読んでいますが、誰かが便利なスニペットを持っているなら...

4

2 に答える 2

12

結果の式をに渡す必要があると思いますR.print

R.qplot("erase_rate", "components",f)
|> R.print 

F# 型プロバイダーを介して ggplot2 を使用する際の問題は、ggplot2 ライブラリが少し巧妙すぎることです。私はしばらくこれで遊んでいましたが、関数だけを使用している限り、うまく機能しているようですqplot。もっと手の込んだことをしたい場合は、R コードを文字列として記述して を呼び出す方がおそらく簡単ですR.eval。これを行うには、次のものが必要です。

// Helper function to make calling 'eval' easier
let eval (text:string) =
  R.eval(R.parse(namedParams ["text", text ]))

eval("library(\"ggplot2\")")

// Assuming we have dataframe 'ohlc' with 'Date' and 'Open'
eval("""
  print(
    ggplot(ohlc, aes(x=Date, y=Open)) + 
    geom_line() + 
    geom_smooth()
  )
  """)

また、F# から R にデータを渡す方法 (つまり、CSV タイプ プロバイダーのように、F# からのデータに基づいて R データ フレームを作成する方法) を理解するのにも時間を費やしました。したがって、ohlcデータ フレームに入力するために、これを使用しました ( SampleDataYahoo の CSV プロバイダーはどこにありますか)。

let df =
  [ "Date",  box [| for r in SampleData.msftData -> r.Date |]
    "Open",  box [| for r in SampleData.msftData -> r.Open |]
    "High",  box [| for r in SampleData.msftData -> r.High |]
    "Low",   box [| for r in SampleData.msftData -> r.Low |]
    "Close", box [| for r in SampleData.msftData -> r.Close |] ]
  |> namedParams
  |> R.data_frame
R.assign("ohlc", df)
于 2013-05-29T17:36:19.903 に答える
3

Tomas が指摘しているように、何かを表示するには ggplot2 の結果を出力する必要があります。

これを実現するには、標準の F# 対話型開始スクリプトで fsi セッションにプリンターを追加します。

fsi.AddPrinter(fun (sexp: RDotNet.SymbolicExpression) -> sexp.Print())

これにより、R で出力されるのと同じ方法ですべての操作の結果が出力されるため、RProvider はより便利になります。

于 2013-07-18T15:23:34.357 に答える