Hitung jumlah objek dalam daftar [tertutup]

Jawaban:

170

panjang (x)

Dapatkan atau setel panjang vektor (termasuk daftar) dan faktor, dan objek R lainnya yang metode telah ditentukan.

panjang (x)

Dapatkan panjang setiap elemen dari list atau vektor atom (is.atomic) sebagai vektor bilangan bulat atau numerik.

Joey
sumber
85

Saran untuk Rpendatang baru seperti saya: berhati-hatilah, berikut ini adalah daftar satu objek  :

> mylist <- list (1:10)
> length (mylist)
[1] 1

Dalam kasus seperti ini, Anda tidak mencari panjang daftar, tetapi elemen pertamanya:

> length (mylist[[1]])
[1] 10

Ini adalah daftar yang "benar":

> mylist <- list(1:10, rnorm(25), letters[1:3])
> length (mylist)
[1] 3

Juga, tampaknya yang Rmenganggap data.frame sebagai daftar:

> df <- data.frame (matrix(0, ncol = 30, nrow = 2))
> typeof (df)
[1] "list"

Dalam kasus seperti itu, Anda mungkin tertarik ncol()dan nrow()bukannya length() :

> ncol (df)
[1] 30
> nrow (df)
[1] 2

Meskipun length()juga akan berfungsi (tetapi ini adalah trik ketika data.frame Anda hanya memiliki satu kolom):

> length (df)
[1] 30
> length (df[[1]])
[1] 2
Skippy le Grand Gourou
sumber
12

Saya menghabiskan waktu lama untuk mencoba mencari tahu ini tetapi itu sederhana! Anda bisa menggunakan length(·). length(mylist)akan memberi tahu Anda jumlah objekmylist berisi.

... dan baru menyadari seseorang telah menjawab ini- maaf!

segera
sumber
9

Mari buat daftar kosong (tidak wajib, tapi bagus untuk diketahui):

> mylist <- vector(mode="list")

Mari kita masukkan beberapa hal di dalamnya - 3 komponen / indeks / tag (apa pun yang Anda ingin menyebutnya) masing-masing dengan jumlah elemen yang berbeda:

> mylist <- list(record1=c(1:10),record2=c(1:5),record3=c(1:2))

Jika Anda hanya tertarik pada jumlah komponen dalam daftar gunakan:

> length(mylist)
[1] 3

Jika Anda tertarik dengan panjang elemen dalam komponen tertentu dari daftar, gunakan: (keduanya merujuk komponen yang sama di sini)

length(mylist[[1]])
[1] 10
length(mylist[["record1"]]
[1] 10

Jika Anda tertarik dengan panjang semua elemen di semua komponen daftar gunakan:

> sum(sapply(mylist,length))
[1] 17
Jeff Kraus
sumber
7

Anda juga bisa menggunakan unlist(), yang sering berguna untuk menangani daftar:

> 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 () adalah cara sederhana untuk menjalankan fungsi lain di daftar, seperti:

> sum(mylist)
Error in sum(mylist) : invalid 'type' (list) of argument

> sum(unlist(mylist))
[1] 45
pengguna6062513
sumber