Fungsi R yang akan mengembalikan jumlah item dalam daftar?
Dapatkan atau setel panjang vektor (termasuk daftar) dan faktor, dan objek R lainnya yang metode telah ditentukan.
Dapatkan panjang setiap elemen dari list atau vektor atom (is.atomic) sebagai vektor bilangan bulat atau numerik.
Saran untuk R
pendatang 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 R
menganggap 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
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!
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
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