f1 = function(n=100000, fout="/tmp/out.gpkg", logical=TRUE){ library(sf) d = st_as_sf(data.frame(x=runif(n), y=runif(n), z1=runif(n)>.2, z2=runif(n)>.2, z3=runif(n)>.2), coords=1:2) if(!logical){ d$z1 = as.numeric(d$z1) d$z2 = as.numeric(d$z2) d$z3 = as.numeric(d$z3) } file.remove(fout) st_write(d, fout) } timings <- function(sizes, logical){ times = lapply(sizes, function(n){system.time(f1(n, logical=logical))}) times = data.frame(do.call(rbind, times)) times$n = sizes times$logical = logical return(times) } test1 <- function(sizes){ numbtime = timings(sizes, FALSE) logitime = timings(sizes, TRUE) rbind(numbtime, logitime) }