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

Pen*_*eng 1 r

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

请看我的代码:

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

[1] TRUE  
Run Code Online (Sandbox Code Playgroud)

为什么是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
Run Code Online (Sandbox Code Playgroud)

我对矢量感到困惑,为什么这里的数据[1,]不能成为一个矢量?

Rom*_*ain 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")
)
Run Code Online (Sandbox Code Playgroud)