is.atomic() 对比 is.vector()

is.atomic() vs is.vector()

我不明白 is.atomic()is.vector() 之间的区别。根据我的理解,is.vector() returns TRUE 用于同质一维数据结构。我相信 is.atomic() returns TRUE 用于逻辑、双精度、整数、字符、复数和原始...但是,is.vector() 不会吗?所以我想也许差异在于它的尺寸,但是 is.atomic() 在双精度数据帧上返回 FALSE ,这让我更加困惑,啊......

还有,原子向量和法向量有什么区别?

感谢您的澄清!

原子向量是R中向量的子集。一般意义上,"vector"可以是原子向量、列表或表达式。 language definition 类将向量定义为 "contiguous cells containing data"。另请参阅 help("is.vector")help("is.atomic"),它们解释了何时 return TRUEFALSE.

is.vector(list())
#[1] TRUE
is.vector(expression())
#[1] TRUE
is.vector(numeric())
#[1] TRUE

is.atomic(list())
#[1] FALSE
is.atomic(expression())
#[1] FALSE
is.atomic(numeric())
#[1] TRUE

通俗地说,当我们谈论向量时,我们通常指的是原子向量(甚至可能带有属性)。

R 中的向量可以有 2 个结构,第一个是原子向量,第二个是列表。

如果您创建一个新的空向量,您可以指定获取空列表的模式 vector(mode = "list"),returns 与 list() 相同。

identical(vector(mode = "list"), list())
[1] TRUE

is.vector(vector(mode = "list")) returns [1] TRUE,而 is.atomic(vector(mode = "list")) returns [1] FALSE