本文介绍了对后续元素对应用函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设 x 是一个向量,而 myfunc 是一个有两个参数的函数.我希望在 x 的后续元素对上获得 myfunc 结果的向量.根据定义,该向量的长度应该比 x 的长度小 1.

Suppose x is a vector, and myfunc is a function of two arguments. I wish to get a vector of the results of myfunc on subsequent pairs of elements from x. By definition, that vector should be of length 1 less than x's length.

例如,如果 x 和

myfunc <- function(a,b) {
  return(log(b/a))
}

然后我会期待

> apply_on_pairs(x, myfunc)
[1] 0.6931472 0.4054651 0.2876821

(相当于c(myfunc(1,2), myfunc(2,3), myfunc(3,4)))

推荐答案

mapply(myfunc,x[-length(x)],x[-1])
# [1] 0.6931472 0.4054651 0.2876821

mapply(...) 将第一个参数中的函数应用"到后续参数,在这种情况下,我们传递 x[1:3]x[2:4] 作为 mapply(...) 的第二个第三个参数.

mapply(...) "applies" the function in the first argument to the subsequent arguments, in this case we pass x[1:3] and x[2:4] as the second the third arguments to mapply(...).

这篇关于对后续元素对应用函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-29 10:16