Guest User

Untitled

a guest
Oct 19th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.36 KB | None | 0 0
  1. library(data.table)
  2. library(microbenchmark)
  3. df1 <- data.frame(name = rep(LETTERS, 250), number = rep(c(1:26), 250), stringsAsFactors = FALSE)
  4. df1$name[df1$name == "D" | df1$name == "F" | df1$name == "L"] <- "foo*"
  5. df2 <- data.frame(name = rep(LETTERS, 250), number = rep(c(1:26), 250), stringsAsFactors = FALSE)
  6. df2$name[df2$name == "A" | df2$name == "R" | df2$name == "T"] <- "*foo*"
  7. df3 <- data.frame(name = rep(LETTERS, 250), number = rep(c(1:26), 250), stringsAsFactors = FALSE)
  8. df3$name[df3$name == "C" | df3$name == "Q" | df3$name == "W"] <- "f*oo"
  9.  
  10.  
  11. df <- list(df1, df2, df3)
  12. dt <- lapply(df, as.data.table)
  13.  
  14. mapply.remove.asterisk = function(x){
  15. df2 <- data.frame(mapply(gsub, "\*", "", x, perl = TRUE))
  16. colnames(df2) <- colnames(x)
  17. }
  18.  
  19. dt.remove.asterisk = function (x) {
  20. x[, lapply(.SD, function(x) gsub("\*", "", x, perl = TRUE))]
  21. }
  22.  
  23. mapgsubtest = function(x) {
  24. df.test <- lapply(x, mapply.remove.asterisk)
  25. }
  26.  
  27. dtgsubtest = function(x) {
  28. dt.test <- lapply(x, dt.remove.asterisk)
  29. }
  30.  
  31. microbenchmark(mapgsubtest(df), dtgsubtest(dt), neval = 100)
  32.  
  33. Unit: nanoseconds
  34. expr min lq mean median uq max neval
  35. mapgsubtest(df) 6698066 6886010 7081510.34 7052019 7212621 7955832 100
  36. dtgsubtest(dt) 6791813 6997184 7209173.80 7199550 7352039 8272226 100
  37. neval 0 0 3.21 0 0 301 100
Add Comment
Please, Sign In to add comment