我在.cs
文件中工作,我需要查看c#程序执行的某个对象/变量的输出。我每次都会用它来进行补偿。
例如,在下面的代码中,我需要查看变量 DataNaiss 的输出(类型,行数,包括的所有元素......)。
var DataNaiss = engine.Evaluate("DataNaiss=DataIns[which(cond1 & DataIns$Id %in% ID_Final),'Date.naissance']").AsCharacter();
我尝试添加此代码:
Console.WriteLine(DataNaiss.ToString());
Console.ReadLine();
输出如下:
请看结束行 R.net CharacterVector 。它似乎谈论 DataNaiss 的类型但它的所有元素在哪里?
换句话说,直到现在我还不知道为什么我也在同一个控制台窗口中导入了表 DataAch 的数据,知道我只是调用控制台窗口来显示 DataNaiss 而不是其他的东西!!你可以在第一个表 DataAch 的相同图片元素中看到。 我导入数据的代码是:
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)").AsDataFrame();
DataFrame DataDia = engine.Evaluate("DataDia=read.table('C:/Users/isalah/Desktop/Fichiers_CRM/Fichier_csv/Diagnostic.csv',header=TRUE,sep =';',fill=TRUE)").AsDataFrame();
DataFrame DataCad = engine.Evaluate("DataCad=read.table('C:/Users/isalah/Desktop/Fichiers_CRM/Fichier_csv/CADEAUX.csv',header=TRUE,sep =';',fill=TRUE)").AsDataFrame();
DataFrame DataIns = engine.Evaluate("DataIns=read.table('C:/Users/isalah/Desktop/Fichiers_CRM/Fichier_csv/Inscrits.csv',header=TRUE,sep =';',fill =TRUE)").AsDataFrame();
你怎么解释这个?
答案 0 :(得分:2)
请看结束行R.net CharacterVector。它似乎在谈论DataNaiss的类型但是它的所有元素在哪里?
在变量上调用.ToString()
不会神奇地显示您需要的所有数据。
根据Microsoft Documentation,您可以看到:
ToString方法的默认实现返回Object
类型的完全限定名称
因此,您可以理解,在您的案例中,名为DataNaiss
的变量的类型实际上是CharacterVector
类型。
查看R.Net
的{{3}},您很明显可以看到课程CharacterVector
未覆盖ToString
方法。
为了获取变量DataNaiss
的元素,您必须自己访问它们。我从源代码中看到的唯一方法就是访问它们DataNaiss[0]
,因为在源代码中你有:
public override string this[int index] { get { if (index < 0 || Length <= index) { throw new ArgumentOutOfRangeException(); } using (new ProtectedPointer(this)) { return GetValue(index); } } set { if (index < 0 || Length <= index) { throw new ArgumentOutOfRangeException(); } using (new ProtectedPointer(this)) { SetValue(index, value); } } }
我建议您可以根据它的长度遍历DataNaiss
对象,并获取所需的数据,例如,如果您有权访问Length
属性:
for (int i=0; i<DataNaiss.Length; i++)
{
Console.WriteLine(DataNaiss[i]);
}
未经测试。我根据我在他们的代码中读到的内容来回答所有这些问题。
答案 1 :(得分:0)
通过覆盖DataNaiss变量中的类型上的ToString函数,您可以将它们打印到控制台。
关注the MSDN Guide,你可以这样做:
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public override string ToString()
{
return "Person: " + Name + " " + Age;
}
}
然后在对象上调用ToString()可以打印它们。