在C#的.cs文件中查看R.NET变量输出及解决额外控制台输出问题
解决R.NET中调试变量输出的两个问题
我来帮你拆解并解决这两个碰到的问题:
问题1:DataNaiss.ToString()只显示类型名称,看不到元素内容
你遇到的这个情况是R.NET的正常行为——CharacterVector(也就是你通过AsCharacter()得到的对象)的默认ToString()方法只会返回类型标识,不会自动遍历输出所有元素。要看到具体内容,可以试试这几种方法:
遍历元素逐个输出:直接循环访问
CharacterVector的每一项:foreach (var dateItem in DataNaiss) { Console.WriteLine(dateItem); }拼接成字符串批量输出:用
string.Join把所有元素合并成一个易读的字符串:Console.WriteLine($"DataNaiss所有元素:{string.Join(", ", DataNaiss)}");调用R原生打印功能:让R引擎自己处理输出,还能保留R风格的格式:
engine.Evaluate("print(DataNaiss)");
问题2:控制台意外输出DataAch表格的数据
这是因为R的read.table()函数默认会在执行时打印加载日志(比如读取的行数、列数等),而R.NET会把R控制台的输出重定向到你的C#控制台中。要关掉这个多余输出,只需要在read.table()里加上quiet=TRUE参数,禁止R打印加载相关的信息:
修改后的导入代码示例:
REngine engine = REngine.GetInstance(); DataFrame DataAch = engine.Evaluate("DataAch=read.table('C:/Users/isalah/Desktop/Fichiers_CRM/Fichier_csv/Achats1.csv',header=TRUE,sep =';',fill =TRUE, quiet=TRUE)").AsDataFrame(); DataFrame DataDia = engine.Evaluate("DataDia=read.table('C:/Users/isalah/Desktop/Fichiers_CRM/Fichier_csv/Diagnostic.csv',header=TRUE,sep =';',fill=TRUE, quiet=TRUE)").AsDataFrame(); DataFrame DataCad = engine.Evaluate("DataCad=read.table('C:/Users/isalah/Desktop/Fichiers_CRM/Fichier_csv/CADEAUX.csv',header=TRUE,sep =';',fill=TRUE, quiet=TRUE)").AsDataFrame(); DataFrame DataIns = engine.Evaluate("DataIns=read.table('C:/Users/isalah/Desktop/Fichiers_CRM/Fichier_csv/Inscrits.csv',header=TRUE,sep =';',fill =TRUE, quiet=TRUE)").AsDataFrame();
这样就能只输出你想要的DataNaiss内容,不会再看到加载表格时的多余信息了。
内容的提问来源于stack exchange,提问作者User2018
相关产品推荐
相关产品推荐

