是否有一种惯用的方法来获得R中的向量化条件均值

Pet*_*ris 2 r mean

我想使用向量化条件平均值(当使用ddply和时transform)表示通过某个条件的条目的平均值.我想出了这个,但我想知道它是否可以使用内置函数或流行的包实现?

mean.conditional <- function(x, cond, zero = 0) {
  filter <- cond(x)
  return(sum(ifelse(filter, x, zero)) / sum(filter))
}
Run Code Online (Sandbox Code Playgroud)

或者,以下功能可能更清晰:

mean.conditional <- function(x, filter) {
  return(sum(ifelse(filter, x, 0)) / sum(filter))
Run Code Online (Sandbox Code Playgroud)

Jos*_*ich 5

没有内置函数,但这样做:

sum(x*filter) / sum(filter)
Run Code Online (Sandbox Code Playgroud)