是否有可能以某种方式轻松处理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