2011-02-28 55 views
1

希望(其中之一)映射文件上的最後一個問題。1級或更高級別映射文件上的spChFIDs()

爲什麼這不起作用,我該怎麼做?

load(url('http://gadm.org/data/rda/CUB_adm1.RData')) 
CUB <- gadm 
CUB <- spChFIDs(CUB, paste("CUB", rownames(CUB), sep = "_")) 

非常感謝!

似乎與row.names工作()

load(url('http://gadm.org/data/rda/CUB_adm1.RData')) 
CUB <- gadm 
CUB <- spChFIDs(CUB, paste("CUB", row.names(CUB), sep = "_")) 

回答

2

答案是顯而易見的,一旦一個讀取?row.names()?rownames()幫助。

rownames()功能只知道一些關於矩陣狀物體,而CUB是完全一致的,因此它不具有行名字是rownames()可以發現:

> rownames(CUB) 
NULL 

row.names()是不同的,它是一個S3通用函數,這意味着程序包作者可以爲特定類型的對象編寫方法,以便可以提取這些對象的行名稱。

這裏是我當前會話中可用的row.names()的方法列表,與sp包裝:

> methods(row.names) 
[1] row.names.data.frame    
[2] row.names.default     
[3] row.names.SpatialGrid*    
[4] row.names.SpatialGridDataFrame*  
[5] row.names.SpatialLines*    
[6] row.names.SpatialLinesDataFrame* 
[7] row.names.SpatialPixels*   
[8] row.names.SpatialPoints*   
[9] row.names.SpatialPointsDataFrame* 
[10] row.names.SpatialPolygons*   
[11] row.names.SpatialPolygonsDataFrame* 

    Non-visible functions are asterisked 

類對象CUB的是:

> class(CUB) 
[1] "SpatialPolygonsDataFrame" 
attr(,"package") 
[1] "sp" 

那麼,什麼是發生的是row.names()函數的SpatialPolygonsDataFrame方法正在被使用,它知道在哪裏找到所需的行名稱。

+0

謝謝!這解釋了它:) – speendo

+0

感謝您糾正我的錯誤,順便說一句! – speendo

+0

@Marcel沒有probs。很高興答案幫助。 –

相關問題