R:两个2-d数组的apply()类型函数

csw*_*gle 4 r data-structures

我正在尝试找到一个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平铺上.

谢谢!

Aar*_*ica 9

我不会试图太过花哨.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)