Скорость векторизации зависит от количества столбцов data.frame

Почему для сравнения с data.frame с тем же числом элементов требуется больше времени, но в векторизованных операциях он размещен в большем количестве столбцов? Возьмите этот простой пример, где мы вычитаем 0,5 из каждого элемента, а затем сравниваем его, чтобы увидеть, <0связанный с этим вопросом ):

f.df <- function( df , x = 0.5 ){
  df <- df - x
  df[ df < 0 ] <- 0
  return( df )
}


df1 <- data.frame( matrix( runif(1e5) , nrow = 1e2 ) )
df2 <- data.frame( matrix( runif(1e5) , nrow = 1e3 ) )
df3 <- data.frame( matrix( runif(1e5) , nrow = 1e4 ) )

require( microbenchmark )
microbenchmark( f.df( df1 ) , f.df( df2 ) , f.df( df3 ) , times = 10L )


#Unit: milliseconds
#     expr        min         lq     median         uq        max neval
# f.df(df1) 1562.66827 1568.21097 1595.07005 1674.91726 1680.90092    10
# f.df(df2)   95.77452   98.12557  101.31215  190.46906  198.23927    10
# f.df(df3)   16.25295   16.42373   16.74989   17.95621   18.69218    10

Ответы на вопрос(3)

Ваш ответ на вопрос