首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数据帧函数应用于栅格积木

将数据帧函数应用于栅格积木
EN

Stack Overflow用户
提问于 2018-09-13 05:45:39
回答 1查看 206关注 0票数 0

我正在使用musica软件包,用于降低气候预测

例如,musica库有一组应用于数据帧的函数,但我想将其应用于我的栅格堆栈,并且该函数需要如下参数,

代码语言:javascript
复制
dec = decomp(basin_PT$obs_ctrl, period = c('Y5', 'Y1', 'M6', 'M3', 'M1', 'D20'))

其中,obs_ctrl是一个包含3个变量的data.table : Date (日期对象1980-2005 )、pr(雨量值的向量)和ts(温度值的向量)。应用于光栅砖块我首先创建我的date对象,

代码语言:javascript
复制
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层的栅格砖(每日栅格雨洪数据),这是一块栅格砖

#####Load必需的软件包#########库(Musica)库(data.table)库(Lubridate)库(光栅)库(PCICt)

代码语言:javascript
复制
pr_files= list.files(ipath,pattern='.asc')
rrr<- stack(pr_files)

而且,对栅格的分解函数也是如此,

代码语言:javascript
复制
rse <- function(dtm, rrr ,period = c('Y5', 'Y1', 'M6', 'M3', 'M1', 'D20')){
  musica::decomp(dtm, pr,period)
  }

当应用函数时

代码语言:javascript
复制
c <- raster::overlay(rrr, dtm, fun = rse)

,我收到以下错误,

代码语言:javascript
复制
Error in (function (classes, fdef, mtable)  : 
  unable to find an inherited method for function ‘overlay’ for signature ‘"RasterStack", "POSIXlt"’

有没有什么方法可以将数据帧函数应用于栅格积木?谢谢你的帮忙

EN

回答 1

Stack Overflow用户

发布于 2018-09-14 00:48:26

您需要提供一些简单的示例数据(使用一些代码创建,在线和光栅帮助文件中有许多示例,例如在?overlay中),以便您的代码可以运行,我们可以回答您的问题。

这个函数看起来很奇怪

代码语言:javascript
复制
rse <- function(dtm, rrr ,period = c('Y5', 'Y1', 'M6', 'M3', 'M1', 'D20')){
  musica::decomp(dtm, pr,period)
}

有一个未使用的参数rrr。可能应该是pr

您也可以省略dtm并执行以下操作

代码语言:javascript
复制
rse <- function(pr, period = c('Y5', 'Y1', 'M6', 'M3', 'M1', 'D20')){
  musica::decomp(dtm, pr, period)
}

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

overlay将在您的全局环境中找到dtm

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52303924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档