1

可能重复:
为什么对象是矢量?

请看我的代码:

> 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

我对向量感到困惑,为什么这里的 data[1,] 不能是向量?

4

2 回答 2

10

您正在使用list它创建一个通用向量。列表可以包含不同类型的对象,它们本身就是向量

从而is.vector给出正确答案。请参阅此处了解更多信息。

此外,如果您键入fix(y),您将看到结构:

structure(
 list(
  n1 = 1,
  n2 = "qwe",
  n3 = TRUE,
  n4 = function(z){z+1}
 ),
 .Names = c("n1", "n2", "n3", "n4")
)
于 2012-07-23T13:11:24.543 回答
4

y 一个列表:

> is.list(y)
[1] TRUE

您会感到困惑,因为列表是向量,这在?is.vector. 同一句话说is.vector也将返回TRUE表达式:

> is.vector(as.expression(y))
[1] TRUE
于 2012-07-23T13:28:47.757 回答