length () в R, чтобы определить количество наблюдений в кадре данных - PullRequest
1 голос
/ 14 июля 2020

Я пытаюсь использовать length () для определения количества наблюдений в кадре данных. Если я использую длину (данные), это даст мне количество столбцов; Если я использую length (data $ var1), он даст мне количество элементов в var1. Как использовать length () для определения общего количества наблюдений (количество столбцов * количество элементов в столбце).

Спасибо

Ответы [ 3 ]

1 голос
/ 14 июля 2020

Если нам нужно использовать только length, конвертируйте в matrix и примените length. Он вернет общее количество наблюдений

length(as.matrix(data))

Или преобразование в matrix может быть выполнено t ransposing

length(t(data))

length, прямое применение к data.frame, возвращает количество элементов или столбцов, поскольку data.frame - это list с каждым элементом, имеющим одинаковые length (вместе с некоторыми атрибутами)

1 голос
/ 14 июля 2020

Используйте nrow(df) вместо этого, чтобы получить количество строк и ncol(df) для столбцов. Также есть dim().

0 голосов
/ 14 июля 2020

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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...