Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- N = 50000
- x = y = rep(NA, N)
- x[sample(N, N/2)] = rnorm(N/2)
- y[is.na(x)] = rnorm(N/2)
- dat = data.frame(x, y)
- f1 = function(dat){dat$z = dat$x; dat$z[is.na(dat$x)] = dat$y[is.na(dat$x)]; dat}
- f2 = function(dat){dat$z = ifelse(is.na(dat$x), dat$y, dat$x); dat}
- f3 = function(dat){dat$z = with(dat, ifelse(is.na(x), y, x)); dat}
- f4 = function(dat){dat$z = na.omit(c(unlist(t(dat)))); dat}
- f5 = function(dat){dat$z = rowSums(dat, TRUE); dat}
- library(rbenchmark)
- benchmark(f1(dat), f2(dat), f3(dat), f4(dat), f5(dat),
- columns = c("test", "replications", "elapsed", "relative"),
- order = "relative", replications = 20)
- # test replications elapsed relative
- # 5 f5(dat) 20 0.28 1.000
- # 1 f1(dat) 20 0.30 1.071
- # 4 f4(dat) 20 0.40 1.429
- # 2 f2(dat) 20 0.46 1.643
- # 3 f3(dat) 20 0.58 2.071
Advertisement
Add Comment
Please, Sign In to add comment