Đếm số đối tượng trong danh sách [đã đóng]


Câu trả lời:


170

chiều dài (x)

Lấy hoặc đặt độ dài của vectơ (bao gồm cả danh sách) và thừa số, và của bất kỳ đối tượng R nào khác mà phương thức đã được xác định.

chiều dài (x)

Lấy độ dài của mỗi phần tử của một danh sách hoặc vectơ nguyên tử (is.atomic) dưới dạng một số nguyên hoặc vectơ số.


85

Lời khuyên cho Rnhững người mới đến như tôi: hãy cẩn thận, sau đây là danh sách của một đối tượng duy nhất  :

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

Trong trường hợp này, bạn không tìm độ dài của danh sách mà tìm phần tử đầu tiên của nó:

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

Đây là danh sách "đúng":

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

Ngoài ra, có vẻ như Rcoi data.frame là một danh sách:

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

Trong trường hợp như vậy, bạn có thể quan tâm ncol()nrow()hơn là length() :

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

Mặc dù length()cũng sẽ hoạt động (nhưng đó là một mẹo khi data.frame của bạn chỉ có một cột):

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

12

Tôi đã dành nhiều thời gian để cố gắng tìm ra điều này nhưng nó rất đơn giản! Bạn có thể sử dụng length(·). length(mylist)sẽ cho bạn biết số lượng đối tượng mylistchứa.

... và chỉ nhận ra ai đó đã trả lời điều này- xin lỗi!


9

Hãy tạo một danh sách trống (không bắt buộc, nhưng cần biết):

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

Hãy đặt một số thứ vào đó - 3 thành phần / chỉ mục / thẻ (bất cứ thứ gì bạn muốn gọi nó), mỗi thành phần có số lượng phần tử khác nhau:

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

Nếu bạn chỉ quan tâm đến số lượng các thành phần trong một danh sách, hãy sử dụng:

> length(mylist)
[1] 3

Nếu bạn quan tâm đến độ dài của các phần tử trong một thành phần cụ thể của danh sách, hãy sử dụng: (cả hai đều tham chiếu cùng một thành phần tại đây)

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

Nếu bạn quan tâm đến độ dài của tất cả các phần tử trong tất cả các thành phần của danh sách, hãy sử dụng:

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

7

Bạn cũng có thể sử dụng unlist(), thường hữu ích để xử lý danh sách:

> 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 () là một cách đơn giản để thực thi các hàm khác trên danh sách, chẳng hạn như:

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

> sum(unlist(mylist))
[1] 45
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.