Listedeki nesnelerin sayısını sayın [kapatıldı]


Yanıtlar:


170

uzunluk (x)

Vektörlerin (listeler dahil) ve faktörlerin ve bir yöntemin tanımlandığı diğer herhangi bir R nesnesinin uzunluğunu alın veya ayarlayın.

uzunluklar (x)

Bir listenin veya atom vektörünün (is.atomic) her öğesinin uzunluğunu bir tamsayı veya sayısal vektör olarak alın.


85

RBenim gibi yeni başlayanlar için tavsiyeler : Dikkat edin, aşağıdaki tek bir nesnenin listesi  :

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

Böyle bir durumda listenin uzunluğunu değil, ilk unsurunu arıyorsunuz:

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

Bu "doğru" bir listedir:

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

Ayrıca, Rbir data.frame'i bir liste olarak kabul ediyor gibi görünüyor :

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

Böyle bir durumda size ilginizi çekebilir ncol()ve nrow()yerine length() :

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

Yine length()de işe yarayacak (ancak data.frame'inizde yalnızca bir sütun olduğunda bu bir numara):

> length (df)
[1] 30
> length (df[[1]])
[1] 2

12

Bunu anlamaya çalışmak için yıllar harcadım ama çok basit! Kullanabilirsiniz length(·). length(mylist)size mylistiçerdiği nesnelerin sayısını söyleyecektir .

... ve birisinin bunu zaten cevapladığını fark ettim - üzgünüm!


10

Boş bir liste oluşturalım (gerekli değil, ancak bilmekte fayda var):

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

İçine bir şeyler koyalım - her biri farklı miktarlarda öğelere sahip 3 bileşen / dizin / etiket (ne demek isterseniz):

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

Bir listedeki bileşenlerin sayısı ile ilgileniyorsanız şunları kullanın:

> length(mylist)
[1] 3

Bir listenin belirli bir bileşenindeki elemanların uzunluğuyla ilgileniyorsanız şunu kullanın: (burada her ikisi de aynı bileşene atıfta bulunur)

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

Listenin tüm bileşenlerindeki tüm öğelerin uzunluğuyla ilgileniyorsanız şunu kullanın:

> sum(sapply(mylist,length))
[1] 17

7

unlist()Listeleri işlemek için genellikle yararlı olan şunu da kullanabilirsiniz :

> 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 (), listelerde diğer işlevleri de çalıştırmanın basit bir yoludur, örneğin:

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

> sum(unlist(mylist))
[1] 45
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.