R语言-0基础学习3-循环排序信息处理函数

title: R语言的基础学习
date: 2018-11-22 22:45:19
tags:
- R语言

又来翻之前的笔记啦,这里是一些R语言的基础知识,将会分为几篇,接下来再慢慢更新吧
发现之前的笔记还是简单了一些,这里也做了一些补充~ 通俗易懂,赶紧学起来吧~

如果感觉对你有帮助,可以关注:专栏-生物信息学-小白成长记

R语言学习系列
R语言-0基础学习1-数据结构
R语言-0基础学习2-构建子集
R语言-0基础学习3-循环排序信息处理函数
R语言-0基础学习4-实战1-常见操作

写得有点粗糙。。上班先,后面再加上一些注释吧。

R语言函数

lapply

lapply
-可以循环处理列表中的每一个元素
-lapply(参数):lapply(列表,函数/函数名,其他参数)
-总是返回一个列表
-sapply:简化结果
·结果列表元素长度均为1,返回向量
·结果列表元素长度相同且大于1,返回矩阵

# lapply函数

# 获取函数参数值,查看函数的参数
str(lapply)
# function (X, FUN, ...)  

x <- list(a=1:10, b=c(11,21,31,41,51))
# 求列表中的平均值
lapply(x, mean)
# $a
# [1] 5.5

# $b
# [1] 31

# 简化理解
# sapply(x, mean)
#    a    b 
#  5.5 31.0 

x <- 1:4
str(runif)
# function (n, min = 0, max = 1)  
# 取随机数4组,第一组1个,第二组2个,第三组3个,第四组4个,随机取值每次都不同
lapply(x,runif)
# [[1]]
# [1] 0.2151571

# [[2]]
# [1] 0.6985766 0.6592007

# [[3]]
# [1] 0.6661192 0.8509392 0.4208184

# [[4]]
# [1] 0.7904489 0.2153375 0.9051006 0.5790774


# 依次循环获取
x <- list(a = matrix(1:6, 2,3), b = matrix(4:7,2,2))
lapply(x, function(m) m[1,])
# $a
# [1] 1 3 5

# $b
# [1] 4 6

apply

-沿着数组的某一维度处理数据
·例如:将函数用于矩阵的行或列
·虽然与for/while循环的效率相似,但是只用一句话就可以完成
-apply(参数):apply(数组,维度,函数/函数名)

# apply函数

x <- matrix(1:16, 4, 4)
x
#      [,1] [,2] [,3] [,4]
# [1,]    1    5    9   13
# [2,]    2    6   10   14
# [3,]    3    7   11   15
# [4,]    4    8   12   16

# 行
# 求每一行的平均值
apply(x, 1, mean)
# [1]  7  8  9 10
rowMeans(x)
# [1]  7  8  9 10

# 求每一行的总值
apply(x, 1, sum)
# [1] 28 32 36 40
rowSums(x)
# [1] 28 32 36 40

# 列
# 求每一列的平均值
apply(x, 2, mean)
# [1]  2.5  6.5 10.5 14.5
colMeans(x)
# [1]  2.5  6.5 10.5 14.5

# 求每一列的平均值
apply(x, 2, sum)
# [1] 10 26 42 58
colSums(x)
# [1] 10 26 42 58

x<-matrix(rnorm(100),10,10)
x<-matrix(1:8,2,4)
x
#      [,1] [,2] [,3] [,4]
# [1,]    1    3    5    7  
# [2,]    2    4    6    8  
apply(x,1,quantile,probs=c(0.25,0.75))
#     [,1] [,2]
# 25%  2.5  3.5
# 75%  5.5  6.5

x<-array(rnorm(2*3*4), c(2,3,4))
apply(x,c(1,2),mean)
#             [,1]       [,2]       [,3]
# [1,] -0.46397898 -0.2482768 0.01248193
# [2,]  0.07790236 -0.4837016 0.26095421
apply(x,c(1,3),mean)
#            [,1]       [,2]       [,3]       [,4]
# [1,] -0.3353800 -0.2998365 0.02250723 -0.3203225
# [2,] -0.9839408  0.3820052 0.09458233  0.3142265
apply(x,c(2,3),mean)
#             [,1]       [,2]       [,3]       [,4]
# [1,] -1.10343219 -0.2893299  0.9235837 -0.3029748
# [2,] -0.77739478  0.5608884 -0.9368635 -0.3105870
# [3,] -0.09815427 -0.1483055  0.1889142  0.6044178

mapply

# mapply

list(rep(1,4),rep(2,3),rep(3,2),rep(4,1))
mapply(rep, 1:4, 4:1)
# [[1]]
# [1] 1 1 1 1

# [[2]]
# [1] 2 2 2

# [[3]]
# [1] 3 3

# [[4]]
# [1] 4

s <- function(n ,mean, std){
  rnorm(n ,mean, std)
}

s(4, 0 ,1)
# [1]  1.6682436 -0.1135669  1.3091307  1.6790428

mapply(s, 1:5, 5:1, 2)
# [[1]]
# [1] 4.962771

# [[2]]
# [1] 7.041777 4.412537

# [[3]]
# [1] 6.235212 2.396418 2.105484

# [[4]]
# [1] 1.25445748 1.89605280 5.02650867 0.08146135

# [[5]]
# [1] -0.5887217 -0.8796356 -0.3522833  3.7184535  0.6135497

list(s(1,5,2), s(2,4,2), s(3,3,2), s(4,2,2), s(5,1,2))
# [[1]]
# [1] 8.013666

# [[2]]
# [1] 6.817037 3.655325

# # [[3]]
# [1] 2.681625 2.414309 1.513693

# [[4]]
# [1] 5.267453 5.526816 2.710304 3.979253

# [[5]]
# [1] -3.43557919  0.06875323  5.22241252  0.17730123  1.48459920

tapply

# tapply

x<-c(rnorm(5),runif(5),rnorm(5,1))
f<-gl(3,5)
tapply(x,f,mean)
#          1          2          3 
# -0.3185949  0.4321625  0.7164927 
tapply(x,f,mean,simplify=FALSE)
# $`1`
# [1] -0.3185949

# $`2`
# [1] 0.4321625

# $`3`
# [1] 0.7164927
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值