R 中的条件和 - 通过调用 sum 函数一次计算 2 个不同的总和

  • 本文关键字:一次 计算 函数 条件 sum 调用 r
  • 更新时间 :
  • 英文 :


我想计算向量中小于 10 的数字之和,并计算此类数字在 R 中的出现次数。

为此,我编写了以下代码:

sum = sum(numbers[which(numbers<=10)])
 count = sum(numbers<=10)

有没有办法合并这些语句?而不是调用函数总和两次?

它有点巴洛克风格,但这只会调用sum(和which)一次,并且仍然使用该值两次:

numbers <- 10:1
mapply(do.call, c( function(x){sum(numbers[x])}, #first function
                   length),                      # count of numbers <5
                MoreArgs=list(list(which(numbers<5) )) )
#[1] 10  4

您可以定义自己的函数:

sum_occ <- function(x) {c(sum = sum(x), occ = length(x))}

并将其应用于numbers[which(numbers <= 10)].它调用sum一次,length一次,当然,当您使用所需子集调用函数时,which一次。

set.seed(123)
numbers <- sample(1:20, 20, replace=T)
> sum_occ(numbers[which(numbers <= 10)])
#sum occ 
# 52   9 

相关内容

最新更新