使用RDotNet创建data.table

时间:2016-04-05 12:40:25

标签: c# r r.net

我正在尝试通过RDotNet Library将一些R代码脚本转换为C#代码。 我能够转换大部分,但在C#中创建data.table时存在问题。 上面是我的代码示例:

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) {

        DataFramework core = new ConcreteDataFramework();
        GuiFramework gui = new GuiFramework(core);
        core.addGuiListener(gui);

        Scene scene = new Scene(gui.getView(), 500, 500);
        scene.getStylesheets().add("./Buttons.css");

        primaryStage.setScene(scene);
        primaryStage.show();

        core.registerPlugin(new CsvData());
    }

    // for environments not supporting JavaFX launch automatically:
    public static void main(String[] args) {
        launch(args);
    }
}

当我使用变量mydata时,我得到了一个异常

  

无法将System.Collections.Generic.List`1 [System.String] []类型转换为R矢量

1 个答案:

答案 0 :(得分:0)

您确定要创建一个包含每个单元格中字符串列表的数据框列吗?这不是你在R中创建数据框的方式。当你用Dictionary<string,List<string>>替换Dictionary<string,string>时,下面的代码就可以了。

        Dictionary<string, string> myDic = new Dictionary<string, string>() {
            { "a","aaaa"},
            { "b","bbbb"},
            { "c","cccc"}
        };
        // populate the dictionary
        var colNames = new List<string>() { "col1", "col2" };
        IEnumerable[] columns = new IEnumerable[2];
        columns[0] = myDic.Keys.ToArray();
        columns[1] = myDic.Values.ToArray();

        REngine engine = REngine.GetInstance();
        var mydata = engine.CreateDataFrame(columns, colNames.ToArray(), stringsAsFactors: false);