创建:列表创建用 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