2016-06-23 23 views
0

私はRdotnetを使ってvb.NETに自分のRスクリプトを実装しようとしています。まず、データベースからSQLストアドプロシージャを呼び出して、データの前処理を実行します。これにより、vb.NETのDataTableオブジェクトが得られます。次に、Rdotnetを使用してR関数を実行し、それ以降の処理を行います。私のRスクリプトはデータフレームオブジェクトだけを読み込むことができるので、私はRdotnetのCreateDataFrame関数を使ってデータフレームオブジェクトを作成しようとします。私を許してください。しかし、データの機密性のために実際のデータを提供することはできません。私は、エラーメッセージを表示しますR.NetのCreateDataFrame

Public Function Detect_Gridlock(ByVal data As DataTable) 
    Dim engine As REngine = REngine.GetInstance() 
    engine.Initialize() 
    Dim columns As IEnumerable = data.Columns 
    Dim tableDF As DataFrame = engine.CreateDataFrame(columns, colList(data)) 
    Return tableDF 
End Function 

Public Function colList(ByVal data As DataTable) 
    Dim colNames(data.Columns.Count) As String 
    Dim i As Integer = 1 
    For Each column As DataColumn In data.Columns 
     colNames(i) = column.ColumnName 
    Next 
    Return colNames 

End Function 

:「System.Collections.IEnumerable []」を入力するタイプ「System.Data.DataColumnCollection」のオブジェクトをキャストすること できません。

カラムのmyカラムデータとカラム名であるcolList(data)はコレクションの形式ですが、たぶん、あなたは

Dim columns() as IEnumerable 
Dim tableDF As DataFrame = engine.CreateDataFrame(columns.Cast(Of IEnumerable()), colList(data)) 

代わりの

Dim columns as IEnumerable 
Dim tableDF As DataFrame = engine.CreateDataFrame(columns, colList(data)) 

を使用することができます

答えて

0

ありがとうここでの問題は、最初の引数はあなたが混乱しましたIEnumerables、の配列であることです。しかし、私はdata.Columnsを取得する方法を知らないIEnumerablesの配列を返す。

関連する問題