当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R vector 向量 - 创建、强制等


R语言 vector 位于 base 包(package)。

说明

A 向量R是一个原子向量,即原子类型之一,请参阅“详细信息”,或者是类型 (typeof) 或模式list或者expression.

vector 生成给定长度和模式的 ‘simple’ 向量,其中 ‘simple’ 向量没有属性,即满足 is.null(attributes(.))

as.vector 是一个泛型,尝试将其参数强制转换为 mode 模式的向量(默认值是强制转换为最方便的向量模式):如果结果是原子的 ( is.atomic ),则所有属性都将被删除。对于mode="any",请参阅“详细信息”。

如果 x 是指定模式的向量,除了名称之外没有任何属性,is.vector(x) 返回TRUE。对于mode="any",请参阅“详细信息”。

用法

vector(mode = "logical", length = 0)
as.vector(x, mode = "any")
is.vector(x, mode = "any")

参数

mode

命名原子模式的字符串或 "list""expression" 或(vector 除外) "any" 。目前, is.vector() 允许 mode 的任何类型(参见 typeof ),并且当模式不是 "any" 时, is.vector(x, mode) 几乎与 typeof(x) == mode 相同。

length

指定所需长度的非负整数。对于 long vector ,即 length > .Machine$integer.max ,它的类型必须是 "double" 。提供长度不是 1 的参数是错误的。

x

一个R对象。

细节

原子模式为 "logical""integer""numeric" (同义词 "double" )、 "complex""character""raw"

如果 mode = "any"is.vector 可能会返回 TRUE 对于原子模式, listexpression 。对于任何mode,如果x具有除名称之外的任何属性,它将返回FALSE。 (这与 S 不兼容。)另一方面,as.vector 删除所有属性,包括原子模式结果的名称。

为了mode = "any"和原子向量x,as.vector(x)全部剥离attributes(包括names),返回一个简单的原子向量。
然而,当x是类型"list"或者"expression",as.vector(x)当前返回参数x不变,除非有as.vector方法用于class(x).

请注意,因子不是向量;而是向量。 is.vector 返回 FALSE ,而 as.vector 将因子转换为 mode = "any" 的字符向量。

对于 vector ,给定长度和模式的向量。逻辑向量元素初始化为 FALSE ,数值向量元素初始化为 0 ,字符向量元素初始化为 "" ,原始向量元素初始化为 nul 字节,列表/表达式元素初始化为 NULL

对于 as.vector ,一个向量(原子或列表或表达式类型)。如果结果是原子模式,则所有属性都会从结果中删除,但对于列表或表达式结果通常不会。默认方法处理 24 种输入类型和 12 个 type 值:大多数强制转换的详细信息均未记录,并且可能会发生更改。

对于 is.vectorTRUEFALSEis.vector(x, mode = "numeric") 对于 "integer""double" 类型的向量可以为 true,而 is.vector(x, mode = "double") 只能对于 "double" 类型的向量为 true。

as.vector() 的方法

as.vector 方法的编写者需要注意遵循默认方法的约定。尤其

  • 参数 mode 可以是 "any" 、任何原子模式、 "list""expression""symbol""pairlist" 或别名 "double""name" 之一。

  • 返回值应该是适当的模式。对于mode = "any",这意味着原子向量或列表或表达式。

  • 应适当对待属性:特别是当结果是原子向量时,不应有属性,甚至名称也不应存在。

  • is.vector(as.vector(x, m), m) 对于任何模式 m 都应该为 true,包括默认的 "any"

    目前这还没有实现Rm == "any"x是类型list或者expression除了属性names— 通常是(S3 或 S4)对象的情况(参见is.object) 是内部列表。

注意

as.vectoris.vectormethods 包中的正式类 "vector" 的含义截然不同,因此 as(x, "vector")is(x, "vector")

请注意,如果 is.vector(x) 为 true,则 as.vector(x) 不一定是空操作:任何名称都将从原子向量中删除。

非向量 mode s "symbol" (同义词 "name" )和 "pairlist" 已被接受,但长期以来一直未记录:它们用于实现 as.nameas.pairlist ,并且最好直接使用这些函数。这里的所有说明都不适用于那些mode:请参阅首选形式的帮助。

例子

df <- data.frame(x = 1:3, y = 5:7)
## Error:
try(as.vector(data.frame(x = 1:3, y = 5:7), mode = "numeric"))

x <- c(a = 1, b = 2)
is.vector(x)
as.vector(x)
all.equal(x, as.vector(x)) ## FALSE


###-- All the following are TRUE:
is.list(df)
! is.vector(df)
! is.vector(df, mode = "list")

is.vector(list(), mode = "list")

参考

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

也可以看看

cis.numericis.list

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Vectors - Creation, Coercion, etc。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。