r - 将数据框功能应用于栅格砖
问题描述
我正在使用音乐包,用于缩小气候预测例如,musica 库有一组旨在应用于数据帧的函数,但我想将其应用于我的栅格堆栈,并且该函数需要像这样的参数,
dec = decomp(basin_PT$obs_ctrl, period = c('Y5', 'Y1', 'M6', 'M3', 'M1', 'D20'))
其中 obs_ctrl 是一个具有 3 个变量的 data.table:日期(日期对象 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 层的栅格砖(每日网格化降雨数据),这是栅格砖
#####加载所需的包######### library(musica) library(data.table) library(lubridate) library(raster) library(PCICt)
pr_files= list.files(ipath,pattern='.asc')
rrr<- stack(pr_files)
并且,对栅格过度使用 decomp 函数,
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"’
无论如何将数据框功能应用于栅格砖?谢谢你的帮助
解决方案
您需要提供一些简单的示例数据(使用一些代码创建,在线和光栅帮助文件中有大量示例,例如在 中?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
在您的全局环境中找到。
推荐阅读
- java - java.util.NoSuchElementException 错误(可能是因为 Scanner)
- vb.net - 保存数据以访问不起作用,尽管没有错误
- encryption - oiosaml 密钥库中是否可以有多个密钥?
- python - Kafka Python,如何跟踪在不同进程中开始的消费者
- android - Gradle sync failed - Failed to resolve: appcompat-v7:26
- ethereum - 如何在输入数据中显示调用的智能合约函数的名称
- kubernetes - 如何为公共和私有域运行多个入口网关
- postgresql - 哪种数据类型最好在 postgresql 中存储 ndarray
- javascript - 如何使用 ID 键在 Javascript 中使用来自另一个数组的数据更新一个数组?
- python - 抑制聚合中的属性