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


R unlist 展平列表


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

说明

给定一个列表结构 xunlist 简化它以生成一个向量,其中包含 x 中出现的所有原子组件。

用法

 unlist(x, recursive = TRUE, use.names = TRUE)
.unlist(x, recursive = TRUE, use.names = TRUE)

参数

x

一个R对象,通常是列表或向量。

recursive

合乎逻辑的。是否应该取消列出 x 的列表组件?

use.names

合乎逻辑的。名字应该被保留吗?

细节

unlist 是通用的:您可以编写方法来处理特定类的对象,请参阅 InternalMethods 并注意,例如,relistrelistable 对象的 unlist 方法。

如果是 recursive = FALSE ,则该函数不会递归超出 x 中的第一级项目。

因子经过特殊处理。如果 x 的所有非列表元素都是 factor(或有序因子)对象,则结果将是一个因子,其级别是元素级别集的并集,按照级别在级别集中出现的顺序元素(这意味着如果所有元素具有相同的水平集,即结果的水平集)。

.unlist() 是内部版本的接口,没有对因子进行这种特殊处理。

x 可以是原子向量,但 unlist 没有任何用处,甚至不删除名称。

默认情况下, unlist 尝试保留 x 中存在的命名信息。如果use.names = FALSE,所有命名信息都会被删除。

在可能的情况下,列表元素在取消列出期间被强制为通用模式,因此结果通常最终作为字符向量。向量将被强制为层次结构中组件的最高类型 NULL < raw <逻辑< 整数 < 双 < 复杂 < 字符 < 列表 < 表达式:pairlists 被视为列表。

列表是一个(通用)向量,简化后的向量可能仍然是一个列表(并且可能保持不变)。列表的非向量元素(例如名称、公式和调用等语言元素)不会被强制,因此包含其中一个或多个的列表仍然是列表。 (取消列出 lm 拟合的效果是一个以单独残差作为组件的列表。)请注意,unlist(x) 现在对于非向量 x 也返回不变的 x,而不是在这种情况下发出错误信号。

NULL 或用于保存列表组件的适当模式的表达式或向量。

在将pairlists强制转换为列表之后,输出类型由层次结构中组件的最高类型确定:NULL < raw <逻辑<整数<双精度<复杂<字符<列表<表达式。

例子

uop <- unlist(op <- options())
length(uop) > length(op) # *atomic* vectors are still split into parts
uop2 <- unlist(op, recursive = FALSE)

l.ex <- list(a = list(1:5, LETTERS[1:5]), b = "Z", c = NA)
unlist(l.ex, recursive = FALSE) # 'a' is still split ..
unlist(l.ex, recursive = TRUE)

l1 <- list(a = "a", b = 2, c = pi+2i)
unlist(l1) # a character vector
l2 <- list(a = "a", b = as.name("b"), c = pi+2i)
unlist(l2) # remains a list

ll <- list(as.name("sinc"), quote( a + b ), 1:10, letters, expression(1+x))
utils::str(ll)
for(x in ll)
  stopifnot(identical(x, unlist(x)))

参考

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

也可以看看

cas.listrelist

相关用法


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