R语言-0基础学习3-循环排序信息处理函数
2020-04-20 本文已影响0人
lietobrain
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