リスト内のオブジェクトの数を数える[終了]


回答:


170

長さ(x)

ベクトル(リストを含む)と係数、およびメソッドが定義されている他のRオブジェクトの長さを取得または設定します。

長さ(x)

リストまたは原子ベクトル(is.atomic)の各要素の長さを整数または数値ベクトルとして取得します。


85

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

12

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

...そして、誰かがすでにこれに答えていることに気づいたばかりです-すみません!


9

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

> 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

7

を使用することもできます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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.