R:访问列表元素和值

本文介绍了如何在R语言中通过names()和unlist()函数访问和处理列表元素。通过示例展示了当列表包含不同类型的元素时,unlist()如何将它们转换为向量,并遵循R中不同数据类型的优先级结构,如从逻辑类型到字符串类型。此外,还展示了如何使用unname()去除向量的名称。


 

    如果列表的各元素含有标签,就可以使用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 < 逻辑类型 < 整型 < 实数类型 < 复数类型 < 列表 < 表达式(把配对列表当作普通列表)。

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值