2014-07-03 46 views
3

我已经撞到墙上试图创建一个别名(又名指针,或一个新的短昵称指定内存中的同一对象,而不复制该对象)到墙上复杂对象的子部分。假设我正在处理类SpatialPolygonsDataFrame的对象(包“sp”),并且我想对其中的一部分执行操作,深入该对象的分层表示中。相反,多次写东西像创建一个别名到一个对象的插槽R

[email protected][FRA][[1]]@Polygons[[1]] 

的我希望能写简单的

mypolygon 

使

[email protected][FRA][[1]]@Polygons[[1]]@coords 

可以简写

[email protected] 

等我看过我应该也许你se环境作为前者.Alias的替代函数,但无法知道如何告诉R我想将复杂对象的子部分视为环境。谢谢!

回答

2

分配:

[email protected][FRA][[1]]@Polygons[[1]] 

,直到你在修改它的东西不会创建一个副本。所以,如果它只是简单的访问数据,使一些代码更具可读性,那么这将是很好的:

[email protected] 
mean([email protected][,1]) 

这些都不会做一个副本。

但是,如果你做的修改mypolygon,例如,通过改变@coords,你需要把修改后的值放回结构,因为一份拷贝:

[email protected] = [email protected] * 1000 
[email protected][FRA][[1]]@Polygons[[1]] = mypolygon 

我认为这是一个最佳的解决方案,因为它的就像任何种类的魔法混叠方案一样高效,并且由于没有神奇的动作距离发生,所以它的效果非常明显。

我不认为有任何方法可以像您想要的那样对对象的部分进行别名。