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

R语言学习笔记(十一) 零碎知识点(26-30)

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

26--aggregate( )

函数aggregate()对分组中的每一个变量调用tapply()函数。

aggregate(a,list,f)

第二个参数必须是列表。也就是因子部分。

第三个参数即函数 f 并不是面向数据框

> aggregate(iris[, -5], list(iris$Species), mean)
     Group.1 Sepal.Length Sepal.Width Petal.Length Petal.Width
1     setosa        5.006       3.428        1.462       0.246
2 versicolor        5.936       2.770        4.260       1.326
3  virginica        6.588       2.974        5.552       2.026

27--cut()

cut()函数是生成因子的常用的方法

cut(a,b,labels = FALSE)

a为数据向量

由向量 b 定义区间,区间为左开右闭,(b[1], b[2] ]

labels = TRUE输出区间,labels = FALSE 输出对应的第几个区间。

> a <- c(.3, .4, .7, .2, .1)
> b <- seq(0, 1, 0.1)
> cut(a,b)
[1] (0.2,0.3] (0.3,0.4] (0.6,0.7] (0.1,0.2] (0,0.1]  
10 Levels: (0,0.1] (0.1,0.2] (0.2,0.3] ... (0.9,1]
> cut(a, b, labels = F)
[1] 3 4 7 2 1

28--findInterval()

findInterval (x, vec)

x 为数据向量

vec为一个单调递增的向量来产生区间

产生的区间默认为左闭右开

> x <- 2:18
> v <- c(5, 10, 15)
> findInterval(x, v)
 [1] 0 0 0 1 1 1 1 1 2 2 2 2 2 3 3 3 3
> cbind(x, findInterval(x, v))
       x  
 [1,]  2 0
 [2,]  3 0
 [3,]  4 0
 [4,]  5 1
 [5,]  6 1
 [6,]  7 1
 [7,]  8 1
 [8,]  9 1
 [9,] 10 2
[10,] 11 2
[11,] 12 2
[12,] 13 2
[13,] 14 2
[14,] 15 3
[15,] 16 3
[16,] 17 3
[17,] 18 3

29--&&,||

&是向量的逻辑“与”运算符

&&是标量的逻辑“与”运算符,因此,&&作用在两向量上只会比较第一个元素。

|与||的情况也是一样的

> a <- c(T, T, F)
> b <- c(T, F, T)
> a&&b
[1] TRUE
> a&b
[1]  TRUE FALSE FALSE

30--pmin( )

pmin( ), pmax( ):把多个等长度的向量按元素逐个对比。返回所有向量的第K个元素中最小(最大)值。

> pmin(c(1,5,3), c(2,3,4))
[1] 1 3 3