前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言学习-列表

R语言学习-列表

原创
作者头像
靓且有猫
修改2024-07-18 07:54:53
600
修改2024-07-18 07:54:53
举报
文章被收录于专栏:生信学习

列表

list,是R的数据类型中最为复杂的一种。一般来书,列表就是一些对象(或成分,component)的有序集合。列表允许整合若干(可能无关的)对象到单个对象名下。

(1) 列表允许以一种简单的方式组织和重新调用不相干的信息。

(2) 许多R函数的运行结果都是以列表形式返回的。函数需要返回两个以上的变量时需要采用list形式返回。

列表的创建

使用list(。。。)创建列表,list(object1,object2...),其中object可以是到目前为止的提到的任何数据类型。比如:向量,矩阵,列表等

代码语言:R
复制
> A <- "our one list"  #单个字符
> A1 <- c(1,2,3,4,7)   #向量
> A2 <- matrix(c(2,4,6,8),2,2,byrow = T)
> ourlist <- list(A,A1,A2)
> ourlist
[[1]]
[1] "our one list"

[[2]]
[1] 1 2 3 4 7

[[3]]
     [,1] [,2]
[1,]    2    4
[2,]    6    8

声明列表

之前提过如何建立一个向量,现在建立(声明)一个空列表也差不多

代码语言:R
复制
> ourlist2 <- list() #建立或声明一个空向量
> mode(ourlist2)
[1] "list"

标签或者对象名的命名

每一个列表组件都可设置标签,就像向量的变量名或矩阵的行名一样,标签hi显示在$的后面。命名的方式很简单直接在建立列表时直接命名。

代码语言:R
复制
> A <- "our one list"  #单个字符
> A1 <- c(1,2,3,4,7)   #向量
> A2 <- matrix(c(2,4,6,8),2,2,byrow = T)
> A3 <- list(c(1,2),c(3,4)) #列表
> ourlist3 <- list("字符"= A , A1 = A1,juzhen = A2,A3) #注意列表里嵌套一个列表
> ourlist3
$字符
[1] "our one list"

$A1
[1] 1 2 3 4 7

$juzhen
     [,1] [,2]
[1,]    2    4
[2,]    6    8

[[4]]
[[4]][[1]]
[1] 1 2

[[4]][[2]]
[1] 3 4

删除标签

这里讲的删除标签是删除列表中的所有标签,有两个函数可以使用

(1)使用unname()函数去掉标签

(2)使用NULL

代码语言:R
复制
> W <- list(d3= c(1,2,3,4),d4 = c(5,6,7,8))
> W
$d3
[1] 1 2 3 4

$d4
[1] 5 6 7 8

> unname(W)
[[1]]
[1] 1 2 3 4

[[2]]
[1] 5 6 7 8
代码语言:R
复制
> W <- list(d3= c(1,2,3,4),d4 = c(5,6,7,8))
> W
$d3
[1] 1 2 3 4

$d4
[1] 5 6 7 8

> names(W) <- NULL #给标签一个NULL值
> W
[[1]]
[1] 1 2 3 4

[[2]]
[1] 5 6 7 8

另外可以利用Names函数更换列表的标签

代码语言:R
复制
> W <- list(d3= c(1,2,3,4),d4 = c(5,6,7,8))
> W
$d3
[1] 1 2 3 4

$d4
[1] 5 6 7 8

> names(W) <- c("嘿","哈")
> W
$嘿
[1] 1 2 3 4

$哈
[1] 5 6 7 8

列表元素的索引

列表元素的索引有多种,意识索引列表某组件,二是索引列表中某组件里的内容

一、索引列表某组件,可以通过标签索引一个组件整体,方法与向量,矩阵的访问差不多

代码语言:R
复制
> A <- "our one list"  #单个字符
> A1 <- c(1,2,3,4,7)   #向量
> A2 <- matrix(c(2,4,6,8),2,2,byrow = T)
> A3 <- list(c(1,2),c(3,4)) #列表
> ourlist3 <- list("字符"= A , A1 = A1,juzhen = A2,A3) #注意列表里嵌套一个列表
> ourlist3["字符"] #无论有没有标签,可以直接使用组件序号索引
$字符
[1] "our one list"

> ourlist3[2]
$A1
[1] 1 2 3 4 7

二、索引列表某组件中的内容

如果没有标签,有两种方式索引组件内容

(1)使用$符号索引组件内容,变量名+$+标签

(2)使用两个中括号,中括号里写标签,标签要用双引号

注意,无论有没有标签,都可以用两个中括号,中括号里写组件序号索引组件内容

代码语言:R
复制
> W5 <- list(a = c(1,2),b= c(3,6),c(7,8)) #创建一个列表,两个有标签
> W5$a
[1] 1 2
> W5$b
[1] 3 6
> class(W5$a)
[1] "numeric"
> W5[["a"]] #使用两个中括号,中括号里写标签,标签要用双引号
[1] 1 2
> W5[[3]] #无论有没有标签,都可以用两个中括号,中括号里写组件序号索引组件内容
[1] 7 8

列表元素的增减

1,增加元素

当我有一个列表,已经创建完毕,但还需要加入元素,可以通过索引的方式赋值

方法一:通过两个中括号的方式,本来没有第三个,直接加一个进去

方法二:通过$符号,直接标签与内容一次性直接加进去

代码语言:R
复制
> W5 <- list(a = c(1,2),b= c(3,6))
> W5[[3]] <-TRUE
> f <- c(8,9)
> W5[[3]] <- f
> W5
$a
[1] 1 2

$b
[1] 3 6

[[3]]
[1] 8 9

方法二

代码语言:R
复制
> ourlist7 <- list(a = c("很好","非常好"),b = c("good","nice"))
> ourlist7$c <- "好极了"
> ourlist7
$a
[1] "很好"   "非常好"

$b
[1] "good" "nice"

$c
[1] "好极了"

> ourlist7[[3]]
[1] "好极了"
> 

2.减元素

把不需要的元素,直接赋值为NULL,之前提过NULL,表示啥也没有

代码语言:R
复制
> ourlist7$b = NULL
> ourlist7
$a
[1] "很好"   "非常好"

$c
[1] "好极了"

注意,结合之前仿照向量使用负索引也可以的

代码语言:R
复制
> ourlist7 <- list(a = c("很好","非常好"),b = c("good","nice"))
> R3 <- ourlist7[-2]
> R3
$a
[1] "很好"   "非常好"

> ourlist7
$a
[1] "很好"   "非常好"

$b
[1] "good" "nice"

获取标签

直接使用name()函数获取列表所有标签

代码语言:R
复制
> ourlist7 <- list(a = c("很好","非常好"),b = c("good","nice"))
> names(ourlist7)
[1] "a" "b"
> unlist(ourlist7)
      a1       a2       b1       b2 
  "很好" "非常好"   "good"   "nice" 

解除列表

直接使用unlist()函数解除列表

列表相关函数

  1. lapply()函数 lapply()-list apply 给每个组件执行给定函数,返回列表,和矩阵apply()类似,同属于apply家族

使用方法:lapply(目标列表,函数)

代码语言:R
复制
> W <- list(d3= c(1,2,3,4),d4 = c(5,6,7,8))
> lapply(W, mean)
$d3
[1] 2.5

$d4
[1] 6.5

> lapply(W, max)
$d3
[1] 4

$d4
[1] 8
  1. sapply()函数,与lapply()函数一样,只是返回的结果类型是向量> W <- list(d3= c(1,2,3,4),d4 = c(5,6,7,8))> sapply(W, mean) d3 d4 2.5 6.5 > class(sapply(W, max)) [1] "numeric"

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 列表
    • 列表的创建
      • 声明列表
        • 标签或者对象名的命名
        • 删除标签
        • 2.减元素
    • 列表元素的索引
    • 列表元素的增减
      • 获取标签
        • 解除列表
        • 列表相关函数
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档