R のベクトルとリストのデータ型の違いは何ですか? 質問する

R のベクトルとリストのデータ型の違いは何ですか? 質問する

R のベクトル データ型とリスト データ型の主な違いは何ですか? これら 2 つのデータ型を使用する (または使用しない) ことの利点と欠点は何ですか?

データ型の使用例を示す例を見たいです。

ベストアンサー1

リストを使用すると、データ オブジェクトはさまざまなデータ型を持つ任意の構造を持つことができます。アトミック ベクトルは 1 つの次元でインデックス付けでき (値へのアクセスが高速化されます)、一度に 1 つのクラスの項目のみを保持できます。異なる型の項目を割り当てると、アトミック ベクトル全体が新しいデータ型に強制変換される可能性があります。行列または配列クラスのオブジェクトは、追加の次元属性を持つアトミックです。技術的には、リストはベクトルですが、この用語を使用する人はほとんどいません。「リスト」はいくつかのモードの 1 つで、他には「論理」、「文字」、「数値」、「整数」があります。厳密な R 用語では、ベクトルと呼んでいるものは「アトミック ベクトル」です。

 aaa <- vector("list", 3)
 is.list(aaa)   #TRUE
 is.vector(aaa)  #TRUE

リストは「再帰的」な型(ベクトル)ですが、アトミック ベクトルはそうではありません。

is.recursive(aaa)  # TRUE
is.atomic(aaa)  # FALSE

データ オブジェクトは、再帰的か、アトミックか、または次元属性 (行列と配列) があるかによって、異なる関数で処理します。ただし、さまざまなデータ構造の「利点と欠点」についての議論が、SO にとって十分に焦点を絞った質問であるかどうかはわかりません。Tommy の発言に付け加えると、リストは任意の数の他のベクトルを保持できるほか、構造を定義する次元属性を持つ特定の種類のリストであるデータフレームを利用できます。実際には折りたたまれたアトミック オブジェクトである行列や配列とは異なり、データフレームは因子型を含むさまざまな型を保持できます。

S4 オブジェクトは、関連する機能要件を持つ特殊なリスト タイプです。

tidyverse に「tibble」データ型が導入されたことで、ベース R のデータフレーム型によるリストを含む列の容量がかなり制限されていたものの、柔軟性が向上しました。

名前以外の属性がある場合、is.vector関数は返されるという注意点もあります。参照:FALSEベクトルとは何ですか?

おすすめ記事