Возможно ли как-то легко работать с данными в 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 Похоже, что другие пути к этому не предоставляются как методы, но их можно добавить. Я посмотрю на это. Вы могли бы ожидать, что meuse [1, «цинк»] <- NA, meuse [1,] [['цинк]]] <- NA, а meuse [1,] $ zinc <- NA должны работать. Вероятно, лучше избегать оператора @, если сможете. – mdsumner
Также это работает, поэтому вы можете избежать $: meuse [['цинк]] [1] <- NA – mdsumner
@mdsumner, ничего себе, так много возможностей! Но что вы скажете о '@' -операторе, почему я должен его избегать? Это не только интересно, но и кажется важным; пожалуйста, напишите как ваш собственный ответ! – TMS