当前位置: 首页 > 编程学习 > 其它语言 > R语言 > 正文

R语言学习笔记(五) 零碎知识点(11-15)

2018-04-22 来源:博客园/嘻呵呵

11--which.min(), which.max()和which()

which(x, arr.ind = FALSE, useNames = TRUE)

x 是一个向量或者数组,可以是NA,但会省略掉,相当于FALSE。

arr.ind = FALSE 当x是数组时,是否返回数组索引(arr.ind = array indices)

which(), which.max(), which.min()返回的是位置

> which(2:10 > 3)
[1] 3 4 5 6 7 8 9
> m <- matrix(1:12, 3, 4)
> div.3 <- m %% 3 == 0
> which(div.3)
[1]  3  6  9 12
> which(div.3, arr.ind = TRUE)
     row col
[1,]   3   1
[2,]   3   2
[3,]   3   3
[4,]   3   4
> which.max(2:4)
[1] 3

12--意外降维(dimension reduction)

提取矩阵中的一行得到向量格式,使用drop参数则可以避免此情况。

> a <- matrix(1:12, ncol = 3)
> b <- a[,1]
> b
[1] 1 2 3 4
> class(b)
[1] "integer"
> c <- a[,1, drop = F]
> c
     [,1]
[1,]    1
[2,]    2
[3,]    3
[4,]    4
> class(c)
[1] "matrix"

13--列表的递归

列表是可以递归的(recursive),即,列表的组件也可以是列表。

b <- list(u = 5, v = 12)
c <- list(w = 13)
a <- list(b, c)
a
[[1]]
[[1]]$u  #此处的 [[1]] 即为b的名字,因为没有给b赋予名字,默认为1
[1] 5
 
[[1]]$v
[1] 12
 
 
[[2]]
[[2]]$w   #此处的 [[2]] 同上
[1] 13

14--列表的降维

unlist 可以获取列表的 值,返回一个向量。

拼接函数c()在拼接列表时默认得到的还是列表

有一个可选参数recursive,即是否把所有组件元素提取出来,组合成一个向量

recursive 仅对列表有效。

> b <- list(u = 5, v = 12)
> unlist(b)
 u  v 
 5 12 
> c(b)
$u
[1] 5
 
$v
[1] 12
 
> c(b,recursive = T)
 u  v 
 5 12 

15--预先设定空向量

在编写函数时往往需要预先设定一个指定的空向量,这时vector()可以指定它的长度以及类型。

> a <- vector(length = 3, mode = 'character')
> a
[1] "" "" ""
> vector(length = 3, mode = 'list')
[[1]]
NULL
 
[[2]]
NULL
 
[[3]]
NULL