如果列表的各元素含有标签,就可以使用names()获取它的标签。
> z <- list( name="Joe", salary=55000, union=T )
> ulst <- unlist( z )
> class( ulst )
[1] "character"
> ulst
name salary union
"Joe" "55000" "TRUE"
> z <- list( a=1, b=2, c=3 )
> ulst <- unlist( z )
> class( ulst )
[1] "numeric"
> ulst
a b c 1 2 3
> z <- list( id=100, name="Joe" )
> ulst <- unlist( z )
> class( ulst )
[1] "character"
> ulst
id name
"100" "Joe"
> names( ulst ) <- NULL
> ulst
[1] "100" "Joe"
> ulst <- unname( ulst )
> ulst
[1] "100" "Joe"
unlist()返回的值是一个向量(在本例中是一个字符串向量。而且向量的元素名称就来自原列表的标签)。如果用一个数作为开始,那么就得到数。如果列表内都是数值。那么unlist()返回的也就是数值向量。
在混合类型的情形下,R选择了这些类型中能最大程度地保留它们共同特性的类型,如上例:字符串。也就是说,R的各种类型之间有优先级结构。
unlist()在去列表化的时候,只要有可能,列表的元素都被强制转换成一种共同存储模式。因此unlist()的结果通常都是字符串向量。
各种类型的优先级排序是:NULL < raw < 逻辑类型 < 整型 < 实数类型 < 复数类型 < 列表 < 表达式(把配对列表当作普通列表)。
本文介绍了如何在R语言中通过names()和unlist()函数访问和处理列表元素。通过示例展示了当列表包含不同类型的元素时,unlist()如何将它们转换为向量,并遵循R中不同数据类型的优先级结构,如从逻辑类型到字符串类型。此外,还展示了如何使用unname()去除向量的名称。
1194

被折叠的 条评论
为什么被折叠?



