用布尔表达式理解`sum`函数行为

时间:2014-09-06 17:58:57

标签: r

考虑以下代码:

x=c(1,1,1,2,2,2,2,5,5,5,5,5)
x
# [1] 1 1 1 2 2 2 2 5 5 5 5 5
sum(x==1,2)
# [1] 5

sum(x==1,2)在做什么?

1 个答案:

答案 0 :(得分:4)

查看help(sum),我们看到所有未命名为na.rm的参数都在...参数中,这意味着该函数将尝试添加它们。

您正在传递sum向量c(x==1, 2)。在此向量中,x==1返回的逻辑向量将转换为数字类型,然后获取总和。

> x
## 1 1 1 2 2 2 2 5 5 5 5 5
> x==1
## TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
> c(x==1, 2)
## 1 1 1 0 0 0 0 0 0 0 0 0 2
> sum(c(x==1,2))
## 5
> sum(x==1,2)
## 5