2017-03-22 55 views
-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):使用$

的形式適用於遞歸對象如列表和 成對列表。它只允許一個文字字符串或一個符號作爲索引號 。也就是說,索引是不可計算的:對於其中 需要評估表達式以查找索引的情況,請使用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

好的,看我的編輯。 –