[R] How to pass na.rm=T to a user defined function
Jun Shen
jun.shen.ut at gmail.com
Fri Jul 29 02:51:47 CEST 2016
Dear list,
I write a small function to calculate multiple stats on multiple variables
and export in a format exactly the way I want. Everything seems fine until
NA appears in the data.
Here is my function:
do.stats <- function(data, stats.func, summary.var)
as.data.frame(signif(sapply(stats.func,function(func)
mapply(func,data[summary.var])),3))
A test dataset:
test <-
data.frame(ID=1:100,CL=rnorm(100),V1=rnorm(100),V2=rnorm(100),ALPHA=rnorm(100))
a command like the following
do.stats(test, stats.func=c('mean','sd','median','min','max'),
summary.var=c('CL','V1', 'V2','ALPHA'))
gives me
mean sd median min max
CL 0.1030 0.917 0.0363 -2.32 2.47
V1 -0.0545 1.070 -0.2120 -2.21 2.70
V2 0.0600 1.000 0.0621 -2.80 2.62
ALPHA -0.0113 0.919 0.0284 -2.35 2.31
However if I have a NA in the data
test$CL[1] <- NA
The same command run gives me
mean sd median min max
CL * NA NA NA NA NA*
V1 -0.0545 1.070 -0.2120 -2.21 2.70
V2 0.0600 1.000 0.0621 -2.80 2.62
ALPHA -0.0113 0.919 0.0284 -2.35 2.31
I know this is because those functions (mean, sd etc.) all have
na.rm=F by default. How can I
pass na.rm=T to all these functions without manually redefining those
stats functions
Appreciate any comment.
Thanks for your help.
Jun
[[alternative HTML version deleted]]
More information about the R-help
mailing list