如何测试对象是否是R中的向量

时间:2018-12-18 12:54:34

标签: r

我想测试对象是否是R中的向量。我对为什么感到困惑

is.vector(c(0.1))

返回TRUE,

is.vector(0.1)

我希望当它只是一个数字时返回false,而当它是一个矢量时返回true。有人可以为此提供任何帮助吗?

非常感谢。

2 个答案:

答案 0 :(得分:1)

正如@RHertel所提到的,R认为c(0.1)是长度为1的向量。您可能还想测试length。例如。

> x <- 1
> y <- 1:2
> is.vector(x) & length(x) > 1
[1] FALSE
> is.vector(y) & length(y) > 1
[1] TRUE

答案 1 :(得分:1)

在R中,不存在单个数字或字符串。它们是长度为1的向量。或者嵌入到一些更复杂的结构中。

is.vector(c(0.1))is.vector(0.1)在R中绝对相同。

这也是原因,length("this is a string/character")返回1的原因-因为在这种情况下,length()测量向量中的元素数。

如果您在R控制台中输入"this is a string/character",就会看到它: 返回[1] "this is a string/character"-[1]指示:长度为1的向量。

因此,您必须执行nchar("this is a string/character")才能获得第一个元素的长度-字符字符串-返回26

nchar(c("this is a string/character", "and this another string"))
## [1] 26 23
## nchar is vectorized as you see ...

这与Python的重要区别在于Python的字符串和数字可以独立存在。 因此len("this")在Python中返回4。 len(["this"])但是为1(列表中为1个元素,因此列表的长度为1)。