C# 使用RDotNet从deldir对象提取x、y值
背景 我使用RDotNet运行一个R脚本,该脚本使用deldir包执行voronoi细分。之后 R:C# 使用RDotNet从deldir对象提取x、y值,c#,r,r.net,C#,R,R.net,背景 我使用RDotNet运行一个R脚本,该脚本使用deldir包执行voronoi细分。之后 R:tiles=tile.list(voro)我希望将每个tileI的R:tiles[[I][c(“x”,“y”)]提取到c:list中 第1期 我可以使用var tiles=engine.Evaluate(“tiles”).AsVector().ToList()将R:tiles对象提取到C#world中但我很难理解如何使用RDotNet从这一点提取每个磁贴的x,y值: 我不知道如何迭代这个对象来提
tiles=tile.list(voro)
我希望将每个tileI
的R:tiles[[I][c(“x”,“y”)]
提取到c:list
中
第1期
我可以使用var tiles=engine.Evaluate(“tiles”).AsVector().ToList()将R:tiles
对象提取到C#world中代码>但我很难理解如何使用RDotNet从这一点提取每个磁贴的x,y值:
我不知道如何迭代这个对象来提取我想要的x,y值
第二期
或者,我尝试在R中创建一个新的更简单的对象,即values
,并尝试从中提取字符串并解析值。到目前为止,我仅为其中一个点创建了此对象:
R:例如
values <- tiles[[1]][c("x","y")]
但是,我一次只能提取一个字符串,并且必须拆分该字符串以获得我要查找的值。这似乎不是我应该做的事情。
问题
如何从R:tiles[[i][c(“x”,“y”)]
中提取每个tile的x,y坐标到一个c:列表中?如果我正确地得到了你想要的东西,我想你是在追求下面这样的东西。我测试的完整代码已提交到我刚刚设置的SO查询。我已经针对NuGet软件包测试了1.5.5版本;请稍后的读者注意,R.NET的后续版本可能允许您使用其他习惯用法
var res = new List<List<Tuple<double, double>>>();
// w is the result of tile.list as per the sample in ?tile.list
var n = engine.Evaluate("length(w)").AsInteger()[0];
for (int i = 1; i <= n; i++)
{
var x = engine.Evaluate("w[[" + i + "]]$x").AsNumeric().ToArray();
var y = engine.Evaluate("w[[" + i + "]]$y").AsNumeric().ToArray();
var t = x.Zip(y, (first, second) => Tuple.Create(first, second)).ToList();
res.Add(t);
}
var res=new List();
//w是根据tile.list中的样本得出的tile.list结果
var n=engine.Evaluate(“长度(w)”).AsInteger()[0];
for(int i=1;i Tuple.Create(first,second)).ToList();
决议增补(t);
}
这正是我想要做的。
var res = new List<List<Tuple<double, double>>>();
// w is the result of tile.list as per the sample in ?tile.list
var n = engine.Evaluate("length(w)").AsInteger()[0];
for (int i = 1; i <= n; i++)
{
var x = engine.Evaluate("w[[" + i + "]]$x").AsNumeric().ToArray();
var y = engine.Evaluate("w[[" + i + "]]$y").AsNumeric().ToArray();
var t = x.Zip(y, (first, second) => Tuple.Create(first, second)).ToList();
res.Add(t);
}