我知道這是一個新手問題,但我想了解訪問列表中元素的[[]]和$之間的區別。是否有特殊情況下我可以優先使用另一種?訪問列表中的元素的不同方法
我想明白你可以用[[選擇任何單個元素,並且返回的對象將由元素的類型決定,而[返回選定元素的列表對象,甚至包含多個元素的列表。另一方面,當使用$引用列表中的元素時,返回的類型不是列表,而是實際值。
這是正確嗎?有什麼情況下我必須使用[[]]或$?
謝謝你的幫助。
我知道這是一個新手問題,但我想了解訪問列表中元素的[[]]和$之間的區別。是否有特殊情況下我可以優先使用另一種?訪問列表中的元素的不同方法
我想明白你可以用[[選擇任何單個元素,並且返回的對象將由元素的類型決定,而[返回選定元素的列表對象,甚至包含多個元素的列表。另一方面,當使用$引用列表中的元素時,返回的類型不是列表,而是實際值。
這是正確嗎?有什麼情況下我必須使用[[]]或$?
謝謝你的幫助。
您會從閱讀「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
從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
謝謝大衛,但我有dificulties明白這意味着什麼,該指數是不可計算的.. –
好的,看我的編輯。 –
謝謝neilfws,我開始讀這個地質礦產昨天:) –