是否有可能以某種方式輕鬆處理Spatial*DataFrame
(* =點,線,多邊形,像素,網格...)中的數據?特別是我有指定值,並與他們一起工作的困難:輕鬆分配和使用Spatial * DataFrame的數據值
require(gstat)
data(meuse)
coordinates(meuse) = ~x+y
data(meuse.grid)
gridded(meuse.grid) = ~x+y
######## 1) assigning value
meuse[1,'zinc'] <- NA
# Error in meuse[1, "zinc"] <- NA : object of type 'S4' is not subsettable
as.data.frame(meuse)[1,'zinc'] <- NA
# Error in as.data.frame(meuse)[1, "zinc"] <- NA :
# could not find function "as.data.frame<-"
######## 2) operating with values
meuse[, 'zinc'] + 2
# Error in meuse[, "zinc"] + 2 : non-numeric argument to binary operator
我發現很醜陋的解決方法,對於兩種情況:
# ad 1)
meuse2 <- as.data.frame(meuse)
meuse2[1, 'zinc'] <- NA
meuse2 <- SpatialPointsDataFrame(SpatialPoints(meuse), meuse2)
# ad 2)
as.data.frame(meuse)[, 'zinc'] + 2
,但這些都只是初學者的嘗試,太醜陋和複雜......在R中必須更容易!
meuse $ zinc [1] < - NA看起來,其他途徑並不作爲方法提供,但可以添加。我會看看那個。你可以預料到這種情況[1,'鋅'] < - NA,小心[1,] [['''']] - - NA,以及[1,] $鋅< - NA都應該工作。如果可以的話,最好避免使用@運算符。 – mdsumner
另外這個工程,所以你可以避免$:meuse [['鋅']] [1] < - NA – mdsumner
@mdsumner,哇,這麼多的可能性!但是你怎麼說'@'操作符,爲什麼我應該避免它?這不僅有趣,而且看起來很重要;請張貼它作爲你自己的答案! – TMS