Append data frames together in a for loop

后端 未结 8 1718
無奈伤痛
無奈伤痛 2020-11-28 19:21

I have a for loop which produces a data frame after each iteration. I want to append all data frames together but finding it difficult. Following is what I am

8条回答
  •  天命终不由人
    2020-11-28 20:09

    Try to use rbindlist approach over rbind as it's very, very fast.

    Example:

    library(data.table)
    
    ##### example 1: slow processing ######
    
    table.1 <- data.frame(x = NA, y = NA)
    time.taken <- 0
    for( i in 1:100) {
      start.time = Sys.time()
      x <- rnorm(100)
      y <- x/2 +x/3
      z <- cbind.data.frame(x = x, y = y)
    
      table.1 <- rbind(table.1, z)
      end.time <- Sys.time()
      time.taken  <- (end.time - start.time) + time.taken
    
    }
    print(time.taken)
    > Time difference of 0.1637917 secs
    
    ####example 2: faster processing #####
    
    table.2 <- list()
    t0 <- 0
    for( i in 1:100) {
      s0 = Sys.time()
      x <- rnorm(100)
      y <- x/2 + x/3
    
      z <- cbind.data.frame(x = x, y = y)
    
      table.2[[i]] <- z
    
      e0 <- Sys.time()
      t0  <- (e0 - s0) + t0
    
    }
    s1 = Sys.time()
    table.3 <- rbindlist(table.2)
    e1 = Sys.time()
    
    t1  <- (e1-s1) + t0
    t1
    > Time difference of 0.03064394 secs
    

提交回复
热议问题