2012-07-23 73 views
1

可能重複:
why the object is vector?爲什麼list()返回一個向量,而不是一個列表?

請看看我的代碼:

> x=function(z){z+1} 
> y=list(n1=1,n2="qwe",n3=TRUE,n4=x) 
> is.vector(y) 

[1] TRUE 

爲什麼y載體? n1是數字,n2是字符,n3是邏輯的,n4是一個函數。

他們是不同的,那麼爲什麼y是一個向量?當然y只能是一個列表?

> data 
name sex age height 
1 x1 F 18 162 
2 x2 M 19 170 
3 x3 M 21 178 
4 x4 F 22 166 
5 x5 F 23 165 
> data[1,] 
name sex age height 
1 x1 F 18 162 
> is.vector(data[1,]) 
[1] FALSE 

我很困惑向量,爲什麼這裏的數據[1,]不能是一個vectort?

+4

你能告訴我們你爲什麼要問「矢量」這麼多問題?我寫了成千上萬行R代碼,我不記得曾經測試過is.vector(something)。 – Spacedman 2012-07-23 13:25:59

+0

我無法理解概念向量及其用法。 – 2012-07-23 14:00:36

回答

10

您正在使用的list其中創建了通用向量。列表可以包含不同類型的對象,並且它們本身是矢量

因此is.vector給出了正確的答案。有關更多信息,請參閱here

而且如果鍵入fix(y)你會看到結構:

structure(
list(
    n1 = 1, 
    n2 = "qwe", 
    n3 = TRUE, 
    n4 = function(z){z+1} 
), 
.Names = c("n1", "n2", "n3", "n4") 
) 
4

y列表:

> is.list(y) 
[1] TRUE 

你困惑是因爲名單是矢量,它是在描述?is.vector的詳細信息部分的第二段。同一句話說:is.vector也將返回TRUE的表達式:

> is.vector(as.expression(y)) 
[1] TRUE 
相關問題