2016-06-23 1 views
0

Я пытаюсь реализовать свой R-скрипт на vb.NET с помощью Rdotnet. Во-первых, я вызываю SQL-хранимую процедуру из своей базы данных, чтобы выполнить некоторую предварительную обработку данных. Это дает мне объект DataTable в vb.NET. Затем я намерен запустить свою R-функцию, используя Rdotnet для дальнейшей обработки. Поскольку мой скрипт R может читать только объект dataframe, я пытаюсь создать объект dataframe с помощью функции CreateDataFrame в Rdotnet. Простите меня, но я не могу представить фактические данные из-за чувствительного характера данных.CreateDataFrame в R.Net

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.Data.DataColumnCollection» к типу «System.Collections.IEnumerable []».

Хотя мои данные столбца в столбцах и colList (данные), которые являются именами столбцов, представлены в виде коллекции.

Спасибо

ответ

0

Может быть, вы могли бы использовать

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)) 

Проблема здесь состоит в том, что первый аргумент является массивом IEnumerables, который вы запутались. Однако я не знаю, как получить данные. Колонки возвращают массив из IEnumerables.