Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用RDotNet从deldir对象提取x、y值_C#_R_R.net - Fatal编程技术网

C# 使用RDotNet从deldir对象提取x、y值

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值: 我不知道如何迭代这个对象来提

背景

我使用RDotNet运行一个R脚本,该脚本使用deldir包执行voronoi细分。之后 R:
tiles=tile.list(voro)
我希望将每个tile
I
的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);
}