首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有pmin和pmax各取na.rm,为什么没有psum?

有pmin和pmax各取na.rm,为什么没有psum?
EN

Stack Overflow用户
提问于 2012-10-29 22:31:45
回答 1查看 5.2K关注 0票数 37

似乎R可能遗漏了一个明显的简单函数:psum。它是以不同的名称存在,还是在某个包中?

代码语言:javascript
复制
x = c(1,3,NA,5)
y = c(2,NA,4,1)

min(x,y,na.rm=TRUE)    # ok
[1] 1
max(x,y,na.rm=TRUE)    # ok
[1] 5
sum(x,y,na.rm=TRUE)    # ok
[1] 16

pmin(x,y,na.rm=TRUE)   # ok
[1] 1 3 4 1
pmax(x,y,na.rm=TRUE)   # ok
[1] 2 3 4 5
psum(x,y,na.rm=TRUE)
[1] 3 3 4 6                             # expected result
Error: could not find function "psum"   # actual result

我意识到+已经很像psum了,但是NA呢?

代码语言:javascript
复制
x+y                      
[1]  3 NA NA  6        # can't supply `na.rm=TRUE` to `+`

是否有需要添加psum的情况?还是我错过了什么。

这个问题是这个问题的后续问题:

Using := in data.table to sum the values of two columns in R, ignoring NAs

EN

回答 1

Stack Overflow用户

发布于 2020-05-16 16:11:03

在CRAN上快速搜索后,至少有3个包具有psum函数。rccmiscincadatakitkit似乎是最快的。下面重现了Ben Bolker的例子。

代码语言:javascript
复制
benchmark(
  rccmisc::psum(x,y,z,na.rm=TRUE),
  incadata::psum(x,y,z,na.rm=TRUE),
  kit::psum(x,y,z,na.rm=TRUE), 
  psum(x,y,z,na.rm=TRUE),
  psum2(x,y,z,na.rm=TRUE),
  replications=20
)
#                                    test replications elapsed relative
# 2 incadata::psum(x, y, z, na.rm = TRUE)           20   20.05   14.220
# 3      kit::psum(x, y, z, na.rm = TRUE)           20    1.41    1.000
# 4           psum(x, y, z, na.rm = TRUE)           20    8.04    5.702
# 5          psum2(x, y, z, na.rm = TRUE)           20   20.44   14.496
# 1  rccmisc::psum(x, y, z, na.rm = TRUE)           20   23.24   16.482
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13123638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档