为什么list()返回一个向量,而不是一个列表?

时间:2012-07-23 13:01:40

标签: r

  

可能重复:
  why the object is vector?

请参阅我的代码:

> 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,]不能成为一个矢量?

2 个答案:

答案 0 :(得分: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")
)

答案 1 :(得分:4)

y 一个列表:

> is.list(y)
[1] TRUE

您感到困惑,因为列表是向量,在?is.vector的详细信息部分的第二段中对此进行了描述。同一句话说is.vector也会为表达式返回TRUE

> is.vector(as.expression(y))
[1] TRUE
相关问题