Spatial*DataFrame
(* = Points, Lines, Polygons, Pixels, Grid, ...)의 데이터로 어떻게 든 쉽게 작업 할 수 있습니까? 두 경우 모두에 대한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 다른 경로가 메소드로 제공되지 않았지만 추가 될 수 있습니다. 나는 그것에 대해 살펴볼 것이다. 여러분은 meuse [1, 'zinc'] <- NA, meuse [1,] [zinc]] NA 그리고 meuse [1,] $ zinc <- NA가 모두 작동해야합니다. 가능한 경우 @ 연산자를 사용하지 않는 것이 가장 좋습니다. – mdsumner
또한이 작업을 통해 $ : meuse [[ 'zinc']] [1] <- NA – mdsumner
@mdsumner, 와우, 많은 가능성을 피할 수 있습니다! 하지만'@ '연산자에 대해 어떻게 말합니까? 왜 그것을 피해야합니까? 이것은 흥미롭지 만 중요해 보입니다. 자신의 답변으로 게시하십시오! – TMS