R: удалить атрибут в слоте объекта SpatialPixelsDataFrame
Я хочу отобразить мои результаты кригинга, которые хранятся в объекте SpatialPixelsDataFrame. Используя spplot, он автоматически создает график, включающий var1.pred, var1.var и var1.stdev.
Это хорошо, но я хочу, чтобы функция spplot отображала только var1.pred, поэтому я хочу удалить var1.var и var1.stdev (они хранятся в виде атрибутов в слоте @data).
Я не знаю, как это сделать - кто-нибудь может помочь? Заранее спасибо!
Допустим, мой объект называется "аа", тогда вот информация о нем:
str(aa)
Formal class 'SpatialPixelsDataFrame' [package "sp"] with 7 slots
..@ data :'data.frame': 4986 obs. of 3 variables:
.. ..$ var1.pred : num [1:4986] 5.95 5.96 5.96 5.94 5.95 ...
.. ..$ var1.var : num [1:4986] 0.000445 0.0005 0.00072 0.008354 0.000917 ...
.. ..$ var1.stdev: num [1:4986] 0.0211 0.0224 0.0268 0.0914 0.0303 ...
..@ coords.nrs : int [1:2] 1 2
..@ grid :Formal class 'GridTopology' [package "sp"] with 3 slots
.. .. ..@ cellcentre.offset: Named num [1:2] 0.139 0.408
.. .. .. ..- attr(*, "names")= chr [1:2] "x1" "x2"
.. .. ..@ cellsize : Named num [1:2] 0.174 0.174
.. .. .. ..- attr(*, "names")= chr [1:2] "x1" "x2"
.. .. ..@ cells.dim : Named int [1:2] 56 154
.. .. .. ..- attr(*, "names")= chr [1:2] "x1" "x2"
..@ grid.index : int [1:4986] 8604 8548 8492 8435 8436 8379 8380 8323 8324 8325 ...
..@ coords : num [1:4986, 1:2] 6.22 6.22 6.22 6.05 6.22 ...
.. ..- attr(*, "dimnames")=List of 2
.. .. ..$ : NULL
.. .. ..$ : chr [1:2] "x1" "x2"
..@ bbox : num [1:2, 1:2] 0.139 0.408 9.697 26.994
.. ..- attr(*, "dimnames")=List of 2
.. .. ..$ : chr [1:2] "x1" "x2"
.. .. ..$ : chr [1:2] "min" "max"
..@ proj4string:Formal class 'CRS' [package "sp"] with 1 slots
.. .. ..@ projargs: chr NA
3 ответа
Пожалуйста, в следующий раз предоставьте воспроизводимый пример, и вам не нужно ничего удалять здесь.
В справочном файле spplot
у тебя есть
spplot.grid(obj, zcol = names(obj), ..., names.attr, scales = list(draw = FALSE), xlab = NULL, ylab = NULL, aspect = mapasp(obj,xlim,ylim), panel = panel.gridplot, sp.layout = NULL, formula, xlim = bbox(obj)[1, ], ylim = bbox(obj)[2, ], checkEmptyRC = TRUE) .................................................................... .................................................................... .................................................................... obj: object of class extending Spatial-class zcol: character; attribute name(s) or column number(s) in attribute table .................................................................... .................................................................... ....................................................................
Когда вы застряли в R, первым делом попробуйте файл справки. Здесь вы могли видеть, что zcol
Параметры могут решить вашу проблему.
С использованием meuse.grid
Набор данных, который имеет 5 столбцов, мы можем решить построить столбец "почва", как это
require(sp)
data(meuse.grid)
coordinates(meuse.grid) = c("x", "y")
gridded(meuse.grid) <- TRUE
class(meuse.grid)
[1] "SpatialPixelsDataFrame"
attr(,"package")
[1] "sp"
names(meuse.grid)
[1] "part.a" "part.b" "dist" "soil" "ffreq"
spplot(meuse.grid, "soil")
Этот тоже будет работать
spplot(meuse.grid["soil"])
@data - это data.frame, поэтому вы можете манипулировать им как dataframe:
a@data<-a@data[,1,drop=FALSE]
Параметр drop=FALSE заставляет [] не пытаться уменьшить результат до минимальной размерности.