R Inferno [R for BE/BA]

posted by Helmut Homepage – Vienna, Austria, 2019-04-26 14:03 (580 d 12:18 ago) – Posting: # 20244
Views: 4,938

Dear R-Users,

I can’t get my head around this:

loc.stat <- function(x, type, na.rm, distr) {
 non.numerics    <- which(is.na(suppressWarnings(as.numeric(x))))
 x[non.numerics] <- NA
 x <- as.numeric(x)
 if (distr == "nonpar") {
   switch (type,
     pct2.5  = as.numeric(quantile(x, probs=0.025, na.rm=na.rm)),
     pct25   = as.numeric(quantile(x, probs=0.25, na.rm=na.rm)),
     median  = as.numeric(median(x, na.rm=na.rm)),
     pct75   = as.numeric(quantile(x, probs=0.75, na.rm=na.rm)),
     pct97.5 = as.numeric(quantile(x, probs=0.975, na.rm=na.rm)))
 }
 if (distr == "normal") {
   mean.x <-mean(x, na.rm=na.rm)
   sd.x   <- sd(x, na.rm=na.rm)
   n.not.nas <- length(x)-length(which(is.na(x)))
   se <- sd.x/sqrt(n.not.nas)
   switch (type,
     cla2.5  = mean.x+qt(0.025, df=n.not.nas-1, lower.tail=TRUE)*se,
     ar.mean = mean.x,
     cla97.5 = mean.x+qt(0.975, df=n.not.nas-1, lower.tail=TRUE)*se)
 }
}
set.seed(123456)
x <- rnorm(12, 100, 20)
median <- loc.stat(x, "median", TRUE, "nonpar")
mean   <- loc.stat(x, "ar.mean", TRUE, "normal")


Gives

R> median
NULL
R> mean
[1] 109.7066


Why the heck? Quoting the R-Inferno:

Curly braces are also useful with loops, switch and if.

What? How? Google and R-help were not my friends.

Dif-tor heh smusma 🖖
Helmut Schütz
[image]

The quality of responses received is directly proportional to the quality of the question asked. 🚮
Science Quotes

Complete thread:

Activity
 Admin contact
21,213 posts in 4,426 threads, 1,483 registered users;
online 17 (1 registered, 16 guests [including 12 identified bots]).
Forum time: Friday 02:22 UTC (Europe/Vienna)

Biostatistician. One who has neither the intellect for mathematics
nor the commitment for medicine but likes to dabble in both.    Stephen Senn

The Bioequivalence and Bioavailability Forum is hosted by
BEBAC Ing. Helmut Schütz
HTML5