我正在尝试找到一个apply()类型函数,它可以运行一个函数,该函数在两个数组而不是一个数组上运行.
有点像:
apply(X1 = doy_stack, X2 = snow_stack, MARGIN = 2, FUN = r_part(a, b))
Run Code Online (Sandbox Code Playgroud)
数据是来自Landsat瓷砖的一叠带状阵列,使用rbind堆叠在一起.每行包含来自单个磁贴的数据,最后,我需要在此堆栈中的每个数据列(像素)上应用一个函数.一个这样的堆栈包含每个像素是否有雪,而另一个堆栈包含该行的一年中的某一天.我想在每个像素上运行一个分类器(rpart),让它识别每个像素的无雪日.
我现在正在做的事情非常愚蠢:mapply(paste, doy, snow_free)将每个像素的日期和雪状态连在一起作为一个字符串,apply(strstack, 2, FUN)在每个像素上运行分类,在应用函数内部,我正在使用每个字符串爆炸strsplit.正如您可能想象的那样,这是非常低效的,尤其是在100万像素x 300平铺上.
谢谢!
我不会试图太过花哨.for循环可能就是你所需要的.
out <- numeric(n)
for(i in 1:n) {
out[i] <- snow_free(doy_stack[,i], snow_stack[,i])
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您不想自己做簿记,
sapply(1:n, function(i) snow_free(doy_stack[,i], snow_stack[,i]))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6044 次 |
| 最近记录: |