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"])

Укажите название участка:

split(dataset["vari.pred"])

@data - это data.frame, поэтому вы можете манипулировать им как dataframe:

a@data<-a@data[,1,drop=FALSE]

Параметр drop=FALSE заставляет [] не пытаться уменьшить результат до минимальной размерности.

Другие вопросы по тегам