prod(dim(data))
или (вероятно, более читабельный) nrow(data) * nrow(data)
предпочтительнее length(as.matrix(data))
, так как последний будет дорогостоящим в вычислительном отношении.
DF <- data.frame(x = seq_len(1e8), y = seq_len(1e8))
bench::mark(length(as.matrix(DF)), prod(dim(DF)))
#> Warning: Some expressions had a GC in every iteration; so filtering is disabled.
#> # A tibble: 2 x 10
#> expression min mean median max `itr/sec`
#> <chr> <bch:tm> <bch:tm> <bch:tm> <bch:tm> <dbl>
#> 1 length(as~ 1789966.700us 1789966.700us 1789966.700us 1789.967ms 5.59e-1
#> 2 prod(dim(~ 2.200us 3.097us 2.500us 2.174ms 3.23e+5
#> # ... with 4 more variables: mem_alloc <bch:byt>, n_gc <dbl>, n_itr <int>,
#> # total_time <bch:tm>
Создано 14 июля 2020 г. пакетом REPEX (v0.3.0)