如何使用功能& ifelse()总结负值的总和?

时间:2018-03-01 18:55:43

标签: r function

我写了一个简单的函数来希望计算负值的总和但是失败了。理想情况下,当我将一个向量传递给函数时,它应该给出负值的总计数。有人可以帮忙吗?

我的代码:

    arg <- c(rnorm(50, 0))
    neg <- 0
    count.negative.fun <- function(x) {
            ifelse(x <= 0, neg = neg +1,)
            return(neg)
     }

当我打电话时:

  count.negative.fun(arg)

它给了我这条错误消息:"Error in ifelse(x <= 0, neg = neg + 1, ) : unused argument (neg = neg + 1)"

2 个答案:

答案 0 :(得分:2)

使用ifelse并定义函数时,可能会执行

count.negative.fun <- function(x) sum(ifelse(x <= 0, 1, 0))
count.negative.fun(arg)
# [1] 26

请参阅?ifelse。当x的元素为非正数时,它返回1,否则返回0。然后我们可以总结结果。

但是,您也可以简单地写一下

sum(arg < 0)
# [1] 26

答案 1 :(得分:1)

另一种可能的方法是使用length函数本身。为:

length(arg[arg<0])
#[1] 26