2016-04-30 34 views
-1

鑑於爲什麼R中

RAnswers <- c(0:10,NA) ; 
    SAnswers <- c(0:20,NA) ; 
    WAnswers <- c(0:30,NA) ; 

    answers.list <- list(RAnswers,SAnswers,WAnswers) ; 

    class(RAnswers) ; 
    class(answers.list) ; 
    class(answers.list[1]) ; 
    class(answers.list[[1]]) ; 

類(answers.list [1])返回列表中的結果是

> class(RAnswers) ; 
    [1] "integer" 
    > class(answers.list) ; 
    [1] "list" 
    > class(answers.list[1]) ; 
    [1] "list" 
    > class(answers.list[[1]]) ; 
    [1] "integer" 

爲什麼類(answers.list [1])返回「名單「?

+3

對於列表'[]'子集列表,而[[]]從列表中提取元素。當你對一個對象進行子集化時,你經常維護原始對象的類,儘管情況並非總是如此。看到我的答案[在這裏](http://stackoverflow.com/questions/36777567/is-there-a-logical-way-to-think-about-list-indexing/36815401#36815401)。 – lmo

+1

你可以把它寫成@imo的答案嗎?它清晰簡潔。 –

回答

1

在列表中,[用於列表子集。因此,[將返回不同長度的列表。 [[函數用於從列表中提取元素或項目。

子集R經常會返回同一個類的對象,儘管當M或N是導致長度爲1的向量的某個表達式時,矩陣可以移動到更簡單的子集,子集編號爲[M,N](對於data.frames也是如此其中N導致長度爲1的向量)。