Відповіді:
Отримати або встановити довжину векторів (включаючи списки) та факторів, а також будь-якого іншого об'єкта R, для якого визначено метод.
Отримайте довжину кожного елемента списку або атомного вектора (is.atomic) у вигляді цілого чисельного вектора.
Поради для R
новачків, таких як я: будьте уважні, подано список одного об’єкта :
> mylist <- list (1:10)
> length (mylist)
[1] 1
У такому випадку ви шукаєте не довжину списку, а його перший елемент:
> length (mylist[[1]])
[1] 10
Це "справжній" список:
> mylist <- list(1:10, rnorm(25), letters[1:3])
> length (mylist)
[1] 3
Крім того, схоже, що R
Data.frame розглядає як список:
> df <- data.frame (matrix(0, ncol = 30, nrow = 2))
> typeof (df)
[1] "list"
В такому випадку ви можете бути зацікавлені в ncol()
і nrow()
замість length()
:
> ncol (df)
[1] 30
> nrow (df)
[1] 2
Хоча length()
це також спрацює (але це хитрість, коли у вашому data.frame є лише один стовпець):
> length (df)
[1] 30
> length (df[[1]])
[1] 2
Створимо порожній список (не потрібно, але добре знати):
> mylist <- vector(mode="list")
Давайте вкладемо в нього деякі речі - 3 компоненти / індекси / теги (як би ви хотіли це назвати), кожен з різною кількістю елементів:
> mylist <- list(record1=c(1:10),record2=c(1:5),record3=c(1:2))
Якщо вас цікавить лише кількість компонентів у списку, використовуйте:
> length(mylist)
[1] 3
Якщо вас цікавить довжина елементів у певному компоненті списку, використовуйте: (обидва посилаються на один і той же компонент тут)
length(mylist[[1]])
[1] 10
length(mylist[["record1"]]
[1] 10
Якщо вас цікавить довжина всіх елементів у всіх компонентах списку, використовуйте:
> sum(sapply(mylist,length))
[1] 17
Ви також можете використовувати unlist()
, що часто корисно для обробки списків:
> mylist <- list(A = c(1:3), B = c(4:6), C = c(7:9))
> mylist
$A
[1] 1 2 3
$B
[1] 4 5 6
$C
[1] 7 8 9
> unlist(mylist)
A1 A2 A3 B1 B2 B3 C1 C2 C3
1 2 3 4 5 6 7 8 9
> length(unlist(mylist))
[1] 9
unlist () - це простий спосіб виконання інших функцій у списках, таких як:
> sum(mylist)
Error in sum(mylist) : invalid 'type' (list) of argument
> sum(unlist(mylist))
[1] 45