Применение функции dataframe к растровому кирпичу - PullRequest
0 голосов
/ 13 сентября 2018
Я использую пакет musica для уменьшения масштаба климатических проекций

Например, в библиотеке musica есть набор функций, которые предназначены для применения к фрейму данных, но я хочу применить его к моему растровому стеку, и функция требуетНапример,

dec = decomp(basin_PT$obs_ctrl, period = c('Y5', 'Y1', 'M6', 'M3', 'M1', 'D20'))

, где obs_ctrl - таблица данных с 3 переменными: Date (объект даты 1980-2005,), pr (вектор значения осадков) и ts (вектор значения температуры).Применяя к растровому кирпичу, я сначала создаю свой объект даты,

cal <- "365_day"
origin <- "1980-01-01"
origin.pcict <- as.PCICt(origin, cal)
seconds.per.day <- 86400
ts.dat.days <- 0:1989
ts.dat.pcict <- origin.pcict + (ts.dat.days * seconds.per.day)
#convert the object to POSIXlt
dtm<-as.POSIXlt(ts.dat.pcict)

А затем создаю растровый кирпич, у меня есть растровый кирпич из 9490 слоев (ежедневные данные с разбивкой по сетке), Вот растровый кирпич

##### Загрузка необходимого пакета ######### библиотека (musica) библиотека (data.table) библиотека (lubridate) библиотека (растр) библиотека (PCICt)

pr_files= list.files(ipath,pattern='.asc')
rrr<- stack(pr_files)

И, чрезмерно распаковав функцию в растр,

rse <- function(dtm, rrr ,period = c('Y5', 'Y1', 'M6', 'M3', 'M1', 'D20')){
  musica::decomp(dtm, pr,period)
  }

При применении функции

c <- raster::overlay(rrr, dtm, fun = rse)

я получил следующую ошибку:

Error in (function (classes, fdef, mtable)  : 
  unable to find an inherited method for function ‘overlay’ for signature ‘"RasterStack", "POSIXlt"’

Isв любом случае для применения функции dataframe к растровому кирпичу?Спасибо за вашу помощь

1 Ответ

0 голосов
/ 13 сентября 2018

Вам нужно предоставить несколько простых примеров данных (созданных с использованием некоторого кода, есть множество примеров в Интернете и в файлах справки растра, например, в ?overlay), чтобы ваш код мог работать, и мы могли ответить на ваш вопрос.

Эта функция кажется странной

rse <- function(dtm, rrr ,period = c('Y5', 'Y1', 'M6', 'M3', 'M1', 'D20')){
  musica::decomp(dtm, pr,period)
}

Существует аргумент rrr, который не используется. Вероятно, должно быть pr

Вы также можете оставить dtm и сделать

rse <- function(pr, period = c('Y5', 'Y1', 'M6', 'M3', 'M1', 'D20')){
  musica::decomp(dtm, pr, period)
}

r <- raster::overlay(rrr, fun = rse)

оверлей найдет dtm в вашей глобальной среде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...