似乎R可能遗漏了一个明显的简单函数:psum
。它是以不同的名称存在,还是在某个包中?
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
呢?
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
发布于 2020-05-16 16:11:03
在CRAN上快速搜索后,至少有3个包具有psum
函数。rccmisc
、incadata
和kit
。kit
似乎是最快的。下面重现了Ben Bolker的例子。
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
https://stackoverflow.com/questions/13123638
复制相似问题