R语言-列表与矩阵

文章目录

    • 列表
      • 创建
      • 访问列表元素
      • 操作列表元素
      • 合并列表
      • 列表转向量
    • 矩阵
      • 创建
      • 矩阵转置
      • 访问元素
      • 矩阵的算数运算

列表

创建

创建:列表创建用 list() 函数

- L <- list(1,2,3)

- x <- c(1,3,5)
  y <- c(2,4,6)
  L <- list(x, y)

命名:给列表元素命名用 names()函数

names(L) <- c('one', 'two', 'three') #依次给列表L的元素命名

访问列表元素

假如有个列表:L

L <- list(111,222,333)

位置访问:访问第一个元素,L[1]

名称(有名称时才可以)访问:

names(L) <- c('aa','bb','cc')  #先给L的元素命名

#取出L的元素222
L$bb

操作列表元素

假如

L <- list(1,2,3,4)
  • 添加元素8:L[5] <- 8

    可以任意指定添加的元素是第几个,比如 L[10] <- 8

  • 删除元素:(需要记住删除的元素位置)L[5] <- NULL

  • 更新元素:L[2] <- 222

合并列表

比如有两个列表L1, L2,合并,使用 c() 函数

L1 <- list(111,222,333)
L2 <- list('a','b','c')
L <- c(L1, L2)
print(L)

输出:

[[1]]
[1] 111

[[2]]
[1] 222

[[3]]
[1] 333

[[4]]
[1] "a"

[[5]]
[1] "b"

[[6]]
[1] "c"

列表转向量

使用 unlist() 函数

L1 <- list(111,222,333)
L2 <- list('a','b','c')
L <- c(L1, L2)

print(unlist(L))

输出:

[1] "111" "222" "333" "a"   "b"   "c"  

矩阵

创建

matrix(data, nrow, ncol, byrow, dimname) 函数

v <- c(1,2,3,4,5,6)
M <- matrix(v,nrow = 2)
print(M)

#输出
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

参数说明:

  • data:传入的数据,是个向量

  • nrow:指明行数

  • ncol:指明列数,与nrow两个可以只指明一个

  • byrow:逻辑值,表示是否按行输出,默认 FALSE

  • dimname:设置行、列名称,是个列表,如:

v <- c(1,2,3,4,5,6)
rows <- c('r1', 'r2')
cols <- c('c1', 'c2', 'c3')

M <- matrix(v,nrow = 2, dimnames = list(rows,cols))
print(M)

#输出:
   c1 c2 c3
r1  1  3  5
r2  2  4  6

矩阵转置

t() 函数:

print(t(M))

#输出:
   r1 r2
c1  1  2
c2  3  4
c3  5  6

访问元素

取一整行元素,如取第1行元素:

M[1,]

取一整列元素,如取第2列元素:

M[,2]

取某个元素,如取第1行第2列的元素:

M[1,2]

矩阵的算数运算

假设两个矩阵如下:

M1 <- matrix(c(1,2,3,4,5,6),nrow=2)
print(M1)

#输出:
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
M2 <- matrix(c(10,20,30,40,50,60),nrow=2)
print(M2)

#输出
     [,1] [,2] [,3]
[1,]   10   30   50
[2,]   20   40   60
  • 加减:对应元素加减
print(M1+M2)

	 [,1] [,2] [,3]
[1,]   11   33   55
[2,]   22   44   66
  • 乘除:对应元素乘除
print(M1 * M2)
 	 [,1] [,2] [,3]
[1,]   10   90  250
[2,]   40  160  360

你可能感兴趣的:(R,r)