web-dev-qa-db-ja.com

リスト内のオブジェクトの数を数える

リスト内のアイテムの数を返すR関数を知っている人はいますか?

92
Karl
155
Joey

私のような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に列が1つしかない場合はコツです):

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

私はこれを理解しようとして何年も費やしましたが、それは簡単です! length(·)を使用できます。 length(mylist)は、mylistに含まれるオブジェクトの数を示します。

...そして、誰かがすでにこれに答えていることに気付いた-ごめんなさい!

11
anon

空のリストを作成しましょう(必須ではありませんが、知っておくと便利です)。

> 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
9
Jeff Kraus

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
6
user6062513