2014-07-03 75 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 

我認爲這是一個最佳的解決方案,因爲它的就像任何種類的魔法混疊方案一樣高效,並且由於沒有神奇的動作距離發生,所以它的效果非常明顯。

我不認爲有任何方法可以像您想要的那樣對對象的部分進行別名。