2017-03-22 10 views
-1

これは初心者の質問ですが、リストの要素にアクセスする際の[[]]と$の違いを理解しようとしています。 1つを別のものに使用する利点がある特殊なケースはありますか?リスト内の要素にアクセスするさまざまなメソッド

[[任意の単一の要素を選択するためには[[を使用することができ、返されるオブジェクトは要素の型によって決定されますが、[選択された要素のリストオブジェクトまたは複数の要素。一方、リスト内の要素を参照するために$を使用する場合、返される型はリストではなく実際の値です。

これは正しいですか? [[]]や$を使わなければならない機会はありますか?

ありがとうございました。

答えて

1

「R for Data Science」のthe list chapterを読んだほうがよいでしょう。リスト要素が名前を持っているとき

基本的に、あなたは$を使用することができます。

mylist <- list(x = 1:3, y = 4:6) 
names(mylist) 
[1] "x" "y" 

mylist$x 
[1] 1 2 3 

あなたが好きな場合は、名前のリストだけでなく、無名のリストについては、[[]]を使用することができます。

mylist[[1]] 
[1] 1 2 3 

ただし、リスト要素の名前がない場合は$を使用できません。

mylist <- list(1:3, 4:6) 
names(mylist) 
NULL 

mylist$x 
NULL 

mylist[[1]] 
[1] 1 2 3 
+0

はあなたにneilfwsをありがとう、私は昨日、このリソース教材を読み始め:) –

1

R言語definiton(https://cran.r-project.org/doc/manuals/r-release/R-lang.html#Indexing)から:

$を使用して、フォームには、リストや pairlistsとして再帰的なオブジェクトに適用されます。リテラル文字列またはシンボルとして というインデックスのみを使用できます。つまり、インデックスは計算可能ではありません。 が式を評価してインデックスを見つける必要がある場合は、x [[expr]]を使用します。例えば

my.list = list("a"=1 , "b"=2) 
my.index = "b" 
#this works 
my.list[[my.index]]  
# this doesn't  
my.list$my.index 
+0

はあなたのデビッドありがとう、私はそれがインデックスが計算可能ではないことを意味を理解するdificultiesを持っています.. –

+0

ok、私の編集を参照してください。 –

関連する問題