请参阅我的代码:
> 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,]不能成为一个矢量?
答案 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