我正在尝试通过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矢量
答案 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);