R.Net 用法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 |
<br> using
(REngine engine = REngine.CreateInstance( "RDotNet" )) { engine.Initialize(); var
expandGrid = engine.Evaluate( "function(x, y) { expand.grid(x=x, y=y) }" ).AsFunction(); var
v1 = engine.CreateIntegerVector( new [] {1, 2, 3}); var
v2 = engine.CreateCharacterVector( new [] { "a" , "b" , "c" }); var
df = expandGrid.Invoke( new
SymbolicExpression[] {v1, v2}).AsDataFrame(); engine.SetSymbol( "cases" , df); // Not correct: the ‘y‘ column is a "factor". This returns "1", "1", "1", "2", "2", etc. var
letterCases = engine.Evaluate( "cases[,‘y‘]" ).AsCharacter().ToArray(); // This returns something more intuitive for C# Returns ‘a‘,‘a‘,‘a‘,‘b‘,‘b‘,‘b‘,‘c‘ etc. letterCases = engine.Evaluate( "as.character(cases[,‘y‘])" ).AsCharacter().ToArray(); // In the manner of R.NET, try letterCases = engine.Evaluate( "cases[,‘y‘]" ).AsFactor().GetFactors();<br><br> TestDataFrame(engine); Console.WriteLine( "Press any key to exit the program" ); Console.ReadKey(); } private
static
void
TestDataFrame(REngine engine) { // import csv file engine.Evaluate( "dataset<-read.table(file.choose(), header=TRUE, sep = ‘,‘)" ); // retrieve the data frame DataFrame dataset = engine.Evaluate( "dataset" ).AsDataFrame(); for
( int
i = 0; i < dataset.ColumnCount; ++i) { Console.WriteLine( "Column: {0} {1}" , i, dataset.ColumnNames[i]); } for
( int
i = 0; i < dataset.RowCount; ++i) { Console.WriteLine( "Row: {0} {1}" , i, dataset.RowNames[i]); for
( int
k = 0; k < dataset.ColumnCount; ++k) { Console.WriteLine( "Cell[{0},{1}]={2}" , i, k, dataset[i, k]); } } } |
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。