精华内容
下载资源
问答
  • 目 录1、str() 显示数据集和变量类型,并简要展示数据集情况2、subset() 取子集3、which.min(), which.max()和which()4、pmin( )/ pmax( )5、complete.cases( ) 判断对象是否数据完全6、grep()找出所数据框元素...

    目 录

    1、str() 显示数据集和变量类型,并简要展示数据集情况

    2、subset()  取子集

    3、which.min(), which.max()和which()

    4、pmin( )/ pmax( )

    5、complete.cases( ) 判断对象中是否数据完全

    6、grep()找出所数据框中元素所在的列值(仅数据框中)

    7、assign()通过变量名的字符串来赋值

    8、 split()根据因子变量拆分数据框/向量

    9、unique()返回 x 但是省去重复的数值

    10、round(),floor()和ceiling()

    11、sign() 符号函数

    12、%in% 检验x是否为集合y中的元素(x%in%y )

    13、ls( )用来列出现存的所有对象

    常见函数列表

    14、数据管理相关

    15、字符串处理函数

    16、因子

    17、数学计算

    18、数组相关

    19、逻辑运算

    20、控制结构相关

    21、自定义函数相关

    22、输入输出

    23、工作环境

    24、简单统计量

    25、时间序列

    【往期回顾

    R语言 | 第一部分:数据预处理

    R语言|第2讲:生成数据

    R语言常用的数据输入与输出方法 | 第三讲

    R语言数据管理与dplyr、tidyr | 第4讲

    R语言 控制流:for、while、ifelse和自定义函数function|第5讲

    正 文

    1、str() 显示数据集和变量类型,并简要展示数据集情况

    > data(mtcars)> str(mtcars)'data.frame':   32 obs. of  11 variables: $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ... $ cyl : num  6 6 4 6 8 6 8 4 4 6 ... $ disp: num  160 160 108 258 360 ... $ hp  : num  110 110 93 110 175 105 245 62 95 123 ... $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ... $ wt  : num  2.62 2.88 2.32 3.21 3.44 ... $ qsec: num  16.5 17 18.6 19.4 17 ... $ vs  : num  0 0 1 1 0 1 0 1 1 1 ... $ am  : num  1 1 1 0 0 0 0 0 0 0 ... $ gear: num  4 4 4 3 3 3 3 4 4 4 ... $ carb: num  4 4 1 1 2 1 4 2 2 4 ...

    2、subset()  取子集

    条件筛选后,mtcars_df数据集为20 obs.

    > data(mtcars)> str(mtcars)'data.frame':   32 obs. of  11 variables: #……省略部分内容 $ wt  : num  2.62 2.88 2.32 3.21 3.44 ... #……省略部分内容> mtcars_df  3)> str(mtcars_df)'data.frame':   20 obs. of  11 variables: #……省略部分内容 $ wt  : num  3.21 3.44 3.46 3.57 3.19 ... #……省略部分内容

    3、which.min(), which.max()和which()

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

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

    x是一个向量或者数组;arr.ind = FALSE 默认返回数组索引

    > set.seed(1)> x > x [1] -0.6264538  0.1836433 -0.8356286  1.5952808  0.3295078 -0.8204684  0.4874291 [8]  0.7383247  0.5757814 -0.3053884> which(x > 0) #显示x>0的所有数值[1] 2 4 5 7 8 9> which.min(x) #显示min(x)的所有数值的位置[1] 3> which.max(x) #显示max(x)的所有数值的位置[1] 4> plot(1:10,x) #如下图

    6dac4d3145598d195568af5a7e417d31.png

    > y > which(y > 5) #显示x>5的所有数值[1]  6  7  8  9 10 > which(y > 5,arr.ind = TRUE) #显示x>5的所有数值的位置     row col[1,]   1   2[2,]   2   2[3,]   3   2[4,]   4   2[5,]   5   2

    4、pmin( )/ pmax( )

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

    > x > y > > pmin(x,y)[1] 1 2 1 3 4> pmax(x,y)[1] 2 5 3 4 5

    5、complete.cases( ) 判断对象中是否数据完全

    complete.case()可以判断对象中是否数据完全,然后返回TRUE, FALSE。这一函数在去除数据框中缺失值时很有用。

    > x 1,> x     [,1][1,]    1[2,]    2[3,]   NA[4,]    4> complete.cases(x)[1]  TRUE  TRUE FALSE  TRUE> x[complete.cases(x),][1] 1 2 4

    6、grep()找出所数据框中元素所在的列值(仅数据框中)

    > x > x  X1 X21  1 NA2  2  4> grep(1,x)[1] 1> grep(2,x)[1] 1> grep(4,x)[1] 2

    7、assign()通过变量名的字符串来赋值

    > assign("x",c(1:10))> x [1]  1  2  3  4  5  6  7  8  9 10

    8、 split()根据因子变量拆分数据框/向量

    split(x,f);x 可以为向量或者数据框,f 为对应的因子,函数以列表的形式返回

    > x = data.frame(matrix(1:10,nrow = 5))> MorFM = c("Female","Male","Female","Female","Female")> split(x,MorFM)$Female  X1 X21  1  63  3  84  4  95  5 10$Male  X1 X22  2  7> yx > yx$Female  X1 X21  1  63  3  84  4  95  5 10> yx$Male  X1 X22  2  7

    9、unique()返回 x 但是省去重复的数值

    > x <- c(1:5,2:10,3,5)> x [1]  1  2  3  4  5  2  3  4  5  6  7  8  9 10  3  5> unique(x) [1]  1  2  3  4  5  6  7  8  9 10

    10、round(),floor()和ceiling()

    round()四舍五入取整;floor()向下取整;ceiling()向上取整

    > round(3.5)[1] 4> floor(3.5)[1] 3> ceiling(3.5)[1] 4

    11、sign() 符号函数

    sign()根据其参数向量中的数值是正值、零、负值将其分别转化为1,0,-1

    > set.seed(1)> x <- rnorm(20)> x [1] -0.62645381  0.18364332 -0.83562861  1.59528080  0.32950777 -0.82046838 [7]  0.48742905  0.73832471  0.57578135 -0.30538839  1.51178117  0.38984324[13] -0.62124058 -2.21469989  1.12493092 -0.04493361 -0.01619026  0.94383621[19]  0.82122120  0.59390132> x_sign <- sign(x)> x_sign [1] -1  1 -1  1  1 -1  1  1  1 -1  1  1 -1 -1  1 -1 -1  1  1  1> plot(x,x_sign)

    c98d1b8acadb5d7ffc32506dec1c88cf.png

    12、%in% 检验x是否为集合y中的元素(x%in%y )

    > y > 5%in%y[1] TRUE> 4%in%y[1] FALSE

    13、ls( )用来列出现存的所有对象

    pattern是一个具名参数,可以列出所有名称中含有字符串“s”的对象。

    > library(ggplot2)> ls("package:ggplot2", pattern="geom_.a")[1] "geom_bar"    "geom_label"  "geom_map"    "geom_path"   "geom_raster"

    其他函数列表

    14、数据管理相关vector:向量numeric:数值型向量logical:逻辑型向量character;字符型向量list:列表data.frame:数据框c:连接为向量或列表length:求长度subset:求子集seq,from:to,sequence:等差序列rep:重复NA:缺失值NULL:空对象sort,order,unique,rev:排序unlist:展开列表attr,attributes:对象属性mode,typeof:对象存储模式与类型names:对象的名字属性15、字符串处理函数character:字符型向量nchar:字符数substr:取子串format,format C:把对象用格式转换为字符串paste,strsplit:连接或拆分charmatch,pmatch:字符串匹配grep,sub,gsub:模式匹配与替换

    16、因子

    factor:因子codes:因子的编码levels:因子的各水平的名字nlevels:因子的水平个数cut:把数值型对象分区间转换为因子table:交叉频数表split:按因子分组aggregate:计算各数据子集的概括统计量tapply:对“不规则”数组应用函数17、数学计算+, -, *, /, ^, %%, %/%:四则运算ceiling,floor,round,signif,trunc,zapsmall:舍入 max,min,pmax,pmin:最大最小值range:最大值和最小值sum,prod:向量元素和积cumsum,cumprod,cummax,cummin:累加、累乘sort:排序approx和approx fun:插值diff:差分sign:符号函数18、数组相关array:建立数组matrix:生成矩阵data.matrix:把数据框转换为数值型矩阵lower.tri:矩阵的下三角部分mat.or.vec:生成矩阵或向量 t:矩阵转置cbind:把列合并为矩阵rbind:把行合并为矩阵diag:矩阵对角元素向量或生成对角矩阵aperm:数组转置nrow, ncol:计算数组的行数和列数dim:对象的维向量dimnames:对象的维名row/colnames:行名或列名%*%:矩阵乘法crossprod:矩阵交叉乘积(内积)outer:数组外积kronecker:数组的Kronecker积apply:对数组的某些维应用函数tapply:对“不规则”数组应用函数sweep:计算数组的概括统计量aggregate:计算数据子集的概括统计量scale:矩阵标准化matplot:对矩阵各列绘图cor:相关阵或协差阵Contrast:对照矩阵row:矩阵的行下标集col:求列下标集19、逻辑运算,<=,>=,==,!=:比较运算符!,&,&&,|,||,xor():逻辑运算符 logical:生成逻辑向量all,any:逻辑向量都为真或存在真ifelse():二者择一match,%in%:查找unique:找出互不相同的元素which:找到真值下标集合duplicated:找到重复元素20、控制结构相关if,else,ifelse,switch:分支for,while,repeat,break,next:循环apply,lapply,sapply,tapply,sweep:替代循环的函数。21、自定义函数相关function:函数定义source:调用文件call:函数调用22、输入输出cat,print:显示对象 sink:输出转向到指定文件 dump,save,dput,write:输出对象 scan,read.table,load,dget:读入23、工作环境ls,objects:显示对象列表rm, remove:删除对象 q,quit:退出系统 .First,.Last:初始运行函数与退出运行函数。options:系统选项 ?,help,help.start,apropos:帮助功能 data:列出数据集24、简单统计量sum, mean, var, sd, min, max, range, median, IQR(四分位间距)等为统计量sort,order,rank与排序有关,其它还有ave,fivenum,mad,quantile,stem等25、时间序列ts:时间序列对象diff:计算差分time:时间序列的采样时间window:时间窗

    说明:本文中前半部分内容为作者自行整理,后半部分内容引自网络,稍作整理(蓝色标记部分是笔者认为比较常见和使用的函数)。

    展开全文
  • R语言入门:函数介绍(2)%>%大家好,绝艺我又回来更新了!本期主要内容是介绍上次预告的中缀函数%>%,该函数封装于"dplyr"包中。同时剧透下一期内容为有同学点播要求学习的reshape2包中的melt()函数和cast()...

    R语言入门:函数介绍(2)

     %>%

    大家好,绝艺我又回来更新了!

    本期主要内容是介绍上次预告的中缀函数%>%,该函数封装于"dplyr"包中。同时剧透下一期内容为有同学点播要求学习的reshape2包中的melt()函数和cast()函数。

    函数介绍(3)

     %>%

    %>%函数,本质上而言就是编程中常用的管道符。什么叫管道符呢?顾名思义,就是像一个管道一样,把数据传输过去。在R中,%>%函数的作用是将上一个函数运行的结果作为下一个函数的第一个参数输入进去。那么这个功能就显得十分强大了,因为我们知道,大多数的R函数,其第一个参数通常是数据,这就使得我们能够简洁清晰的将数据的变化流程和对数据的操作展示出来。

    话不多书,我们看实例吧!

    %>%的常见用法

    本期仍然以我们非常熟悉的"mtcars"数据集作为示例来进行展示。

    我们知道,"mtcars"数据集是长这样的,每一行都是一个车型,然后有mpg、cyl、hp、drat、wt、qsec、vs、am、gear、carb这些变量。

    0138c4bb9df88c9a2ca38e0e37c7e85f.png

    那么,如果我们想要在这些车型中,筛选出cyl为4或6且mpg小于25且wt<3的所有车型,传统情况下应该如何进行取子集操作呢?

    ec94503c0a8e2ff9bd61c4a17fe01354.png

    那么显然,通过不断地向which()函数中添加筛选条件,我终于还是写出了这个东西,但是对于大多数人而言,这段代码的可读性太差了,需要非常艰难地才能看懂它的含义和逻辑关系是什么。下面让我们使用%>%来尝试解决这个问题吧!

    c4336f883b363c2e08e42f5daed21cb9.png

    通过取子集函数subset()的不断传输,我们可以清晰地看出我们对数据设置的筛选条件,并可以精确地做出改动。

    注:subset(data, formula),其中data是数据,formula是设置的筛选条件。管道符将上一个函数的结果数据作为下一个函数的第一个参数数据输入,以此来实现不断地数据传输处理。

    不仅是在数据清理方面,管道符还可以直接将数据输入到绘图、运算等多种函数中,实现非常灵活的功能。

    c6f374461aaeb66dc16556f9b3a59cc8.png 647d94ec47e6340459aa14349d4f171b.png

    注:select()函数可以选择在数据集中保留哪些变量,参数为select(data, variable)。

    卑微绝艺,在线求转发、关注~

    绝艺

    展开全文
  • 下面我总结一下R语言如何对常用的方差分析进行操作。1. 方差分析的假定 上面这个思维导图,也可以看出,方差分析有三大假定:正态,独立和齐次,如果不满足,可以使用广义线性模型或者混合线性模型,或者广义线性...

    方差分析,是统计中的基础分析方法,也是我们在分析数据时经常使用的方法。下面我总结一下R语言如何对常用的方差分析进行操作。

    1. 方差分析的假定

    上面这个思维导图,也可以看出,方差分析有三大假定:正态,独立和齐次,如果不满足,可以使用广义线性模型或者混合线性模型,或者广义线性混合模型去分析。

    「本次我们的主题有:」

    2. 数据来源

    这里,我们使用的数据来源于R包agridat,它是讲农业相关的论文,书籍中相关的数据收集在了一起,更加符合我们的背景。

    包的下载地址:cran.r-project.org/web/

    「包的介绍」

    「agridat: Agricultural Datasets」 Datasets from books, papers, and websites related to agriculture. Example graphics and analyses are included. Data come from small-plot trials, multi-environment trials, uniformity trials, yield monitors, and more.

    「包的安装方式:」

    ("agridat")
    

    3. 单因素方差分析

    ❝ 比如一个处理有A,B,C三个水平,观测值y,想看一下这个处理是否达到显著性水平,这就可以用到方差分析了。

    「数据描述:」

    ❝ Corn yield and nitrogen fertilizer treatment with field characteristics for the Las Rosas farm, Rio Cuarto, Cordoba, Argentina.
    data()
    dat <- 
    str(dat)
    

    「数据结构:」

    > str(dat)
    '': 3443 obs. of  9 variables:
     $ year : int  1999 1999 1999 1999 1999 1999 1999 1999 1999 1999 ...
     $ lat  : num  -33.1 -33.1 -33.1 -33.1 -33.1 ...
     $ long : num  -63.8 -63.8 -63.8 -63.8 -63.8 ...
     $ yield: num  72.1 73.8 77.2 76.3 75.5 ...
     $ nitro: num  132 132 132 132 132 ...
     $ topo : Factor w/ 4 levels "E","HT","LO",..: 4 4 4 4 4 4 4 4 4 4 ...
     $ bv   : num  163 170 168 177 171 ...
     $ rep  : Factor w/ 3 levels "R1","R2","R3": 1 1 1 1 1 1 1 1 1 1 ...
     $ nf   : Factor w/ 6 levels "N0","N1","N2",..: 6 6 6 6 6 6 6 6 6 6 ...
    

    这里数据有很多列,但是我们要演示单因素方差分析,这里的因素为nf,自变量(Y变量)是yield,想要看一下nf的不同水平是否达到显著性差异。

    「建模:」 Y变量:yield 因子:nf

    「R中的建模代码:」

     m1 = aov(yield ~ nf, data=dat)
    
    • m1为模型保存的名称
    • aov为R中的方差分析代码
    • yield为数据中的Y变量,这里是yield
    • ~,波浪号前面为Y变量,后面为X变量
    • nf为分析的因子变量
    • dat为数据

    「结果:」

    > m1 = aov(yield ~ nf, data=dat)
    > summary(m1)
                  Df  Sum Sq Mean Sq F value   Pr(>F)    
    nf             5   23987    4797    12.4 6.08e-12 ***
    Residuals   3437 1330110     387                     
    ---
    Signif. codes:  0 ‘***’  ‘**’  ‘*’  ‘.’  ‘ ’ 1
    

    结果可以看出,nf之间达到极显著水平,可以进行多重比较。

    「方差分析的显著性和多重比较有何关系???」

    ❝ 方差分析,一般会得到显著性(即P值小于,说明显著,小于,说明极显著,大于,说明不显著),显著的意思是因素之间至少有一对水平达到显著性差异,具体是那一对呢?有几对呢?这就需要用到多重比较。所以,多重比较是在方差分析达到显著性之后进行的,只有显著了(P值小于)才有能进行多重比较。多重比较的方法有很多,比如LSD,Tukey,Bonferroni,Holm等等,我们后面系统的介绍。

    4. 单因素随机区组

    这里区组的设置,可以控制一些环境误差。

    「数据描述:」

    ❝ Switchback trial in dairy with three treatments
    data()
    dat <- 
    str(dat)
    

    「数据结构:」

    > str(dat)
    '': 36 obs. of  5 variables:
     $ cow   : Factor w/ 12 levels "C1","C10","C11",..: 1 5 6 7 8 9 10 11 12 2 ...
     $ trt   : Factor w/ 3 levels "T1","T2","T3": 1 2 3 1 2 3 1 2 3 1 ...
     $ period: Factor w/ 3 levels "P1","P2","P3": 1 1 1 1 1 1 1 1 1 1 ...
     $ yield : num  34.6 22.8 32.9 48.9 21.8 25.4 30.4 35.2 30.8 38.7 ...
     $ block : Factor w/ 3 levels "B1","B2","B3": 1 1 1 1 1 1 2 2 2 3 ...
    

    「建模:」 Y变量:yield 因子:trt 区组:block

    「R中的建模代码:」

    m2 = aov(yield ~ block +trt, data=dat)
    summary(m2)
    

    「结果:」

    > summary(m2)
                Df Sum Sq Mean Sq F value Pr(>F)  
    block        2   30.9   15.46   0.306 0.7385  
    trt          2  273.8  136.88   2.709 0.0823 .
    Residuals   31 1566.1   50.52                 
    ---
    Signif. codes:  0 ‘***’  ‘**’  ‘*’  ‘.’  ‘ ’ 1
    

    结果可以看出,trt之间达到没有极显著水平。

    5. 二因素方差分析(无交互)

    这里区组的设置,可以控制一些环境误差。

    无交互的意思是,二因素之间不考虑互作。

    「数据描述:」

    ❝ Switchback trial in dairy with three treatments
    data()
    dat <- 
    str(dat)
    

    「数据结构:」

    > str(dat)
    '': 36 obs. of  5 variables:
     $ cow   : Factor w/ 12 levels "C1","C10","C11",..: 1 5 6 7 8 9 10 11 12 2 ...
     $ trt   : Factor w/ 3 levels "T1","T2","T3": 1 2 3 1 2 3 1 2 3 1 ...
     $ period: Factor w/ 3 levels "P1","P2","P3": 1 1 1 1 1 1 1 1 1 1 ...
     $ yield : num  34.6 22.8 32.9 48.9 21.8 25.4 30.4 35.2 30.8 38.7 ...
     $ block : Factor w/ 3 levels "B1","B2","B3": 1 1 1 1 1 1 2 2 2 3 ...
    

    「建模:」

    • Y变量:yield
    • 因子1:trt
    • 因子2:period
    • 区组:block

    「R中的建模代码:」

    m3 = aov(yield ~ block +trt +period, data=dat)
    summary(m3)
    

    「结果:」

    > summary(m3)
                Df Sum Sq Mean Sq F value Pr(>F)  
    block        2   30.9   15.46   0.308 0.7374  
    trt          2  273.8  136.88   2.725 0.0823 .
    period       2  109.5   54.74   1.090 0.3497  
    Residuals   29 1456.6   50.23                 
    ---
    Signif. codes:  0 ‘***’  ‘**’  ‘*’  ‘.’  ‘ ’ 1
    

    结果可以看出,trt之间达到没有极显著水平,period之间没有达到显著性水平。

    6. 二因素方差分析(有交互)

    这里区组的设置,可以控制一些环境误差。

    交互的意思是,二因素之间考虑互作。

    「数据描述:」

    ❝ Switchback trial in dairy with three treatments
    data()
    dat <- 
    str(dat)
    

    「数据结构:」

    > str(dat)
    '': 36 obs. of  5 variables:
     $ cow   : Factor w/ 12 levels "C1","C10","C11",..: 1 5 6 7 8 9 10 11 12 2 ...
     $ trt   : Factor w/ 3 levels "T1","T2","T3": 1 2 3 1 2 3 1 2 3 1 ...
     $ period: Factor w/ 3 levels "P1","P2","P3": 1 1 1 1 1 1 1 1 1 1 ...
     $ yield : num  34.6 22.8 32.9 48.9 21.8 25.4 30.4 35.2 30.8 38.7 ...
     $ block : Factor w/ 3 levels "B1","B2","B3": 1 1 1 1 1 1 2 2 2 3 ...
    

    「建模:」

    • Y变量:yield
    • 因子1:trt
    • 因子2:period
    • 区组:block

    「R中的建模代码:」

    m4 = aov(yield ~ block +trt*period, data=dat)
    summary(m4)
    

    注意,这里的trt*period是R中公式的简写,表示trt + period + trt:period,其中trt:period表示互作效应。

    「结果:」

    > summary(m4)
                Df Sum Sq Mean Sq F value Pr(>F)  
    block        2   30.9   15.46   0.339 0.7160  
    trt          2  273.8  136.88   2.997 0.0681 .
    period       2  109.5   54.74   1.199 0.3183  
    trt:period   4  315.0   78.75   1.725 761  
    Residuals   25 1141.6   45.66                 
    ---
    Signif. codes:  0 ‘***’  ‘**’  ‘*’  ‘.’  ‘ ’ 1
    

    结果可以看出,trt之间达到没有极显著水平,period之间没有达到显著性水平,trt和period交互没有达到显著水平。

    7. 多因素方差分析

    这里区组的设置,可以控制一些环境误差。

    多于两个因素的方差分析

    「数据描述:」

    ❝ Switchback trial in dairy with three treatments
    data()
    dat <- 
    str(dat)
    

    「数据结构:」

    > str(dat)
    '': 36 obs. of  5 variables:
     $ cow   : Factor w/ 12 levels "C1","C10","C11",..: 1 5 6 7 8 9 10 11 12 2 ...
     $ trt   : Factor w/ 3 levels "T1","T2","T3": 1 2 3 1 2 3 1 2 3 1 ...
     $ period: Factor w/ 3 levels "P1","P2","P3": 1 1 1 1 1 1 1 1 1 1 ...
     $ yield : num  34.6 22.8 32.9 48.9 21.8 25.4 30.4 35.2 30.8 38.7 ...
     $ block : Factor w/ 3 levels "B1","B2","B3": 1 1 1 1 1 1 2 2 2 3 ...
    

    「建模:」

    • Y变量:yield
    • 因子1:trt
    • 因子2:period
    • 因子3:cow
    • 区组:block

    「R中的建模代码:」

    m5 = aov(yield ~ block + trt*period + cow, data=dat)
    summary(m5)
    

    注意,这里的trt*period是R中公式的简写,表示trt + period + trt:period,其中trt:period表示互作效应。

    「结果:」

    > summary(m5)
                Df Sum Sq Mean Sq F value   Pr(>F)    
    block        2   30.9   15.46  11.155 0.000926 ***
    trt          2  273.8  136.88  98.739 9.96e-10 ***
    period       2  109.5   54.74  39.486 6.49e-07 ***
    cow          9 1428.8  158.76 114.523 8.29e-13 ***
    trt:period   4    5.6    1.41   1.015 0.429042    
    Residuals   16   22.2    1.39                     
    ---
    Signif. codes:  0 ‘***’  ‘**’  ‘*’  ‘.’  ‘ ’ 1
    

    结果可以看出,trt之间达到极显著水平,period之间达到显著性水平,trt和period交互没有达到显著水平,cow达到极显著水平。

    8. 裂区试验方差分析

    裂区试验,包括主区(wplot)和裂区(splot),其中裂区是镶嵌在主区中的,主区和裂区的残差不一样,在模型中需要特殊定义。

    「数据描述:」

    ❝ Strip-split plot of barley with fertilizer, calcium, and soil factors.
    data()
    dat <- 
    str(dat)
    

    「数据结构:」

    > str(dat)
    '': 96 obs. of  5 variables:
     $ rep    : Factor w/ 4 levels "R1","R2","R3",..: 1 1 1 1 1 1 1 1 1 1 ...
     $ soil   : Factor w/ 3 levels "S1","S2","S3": 1 1 1 1 1 1 1 1 2 2 ...
     $ fert   : Factor w/ 4 levels "F0","F1","F2",..: 1 1 2 2 3 3 4 4 1 1 ...
     $ calcium: Factor w/ 2 levels "C0","C1": 1 2 1 2 1 2 1 2 1 2 ...
     $ yield  : num  4.91 4.63 4.76 5.04 5.38 6.21 5.6 5.08 4.94 3.98 ...
    

    「建模:」

    • Y变量:yield
    • 主区:fert
    • 裂区:soil
    • 区组:brep

    「R中的建模代码:」

    m6 = aov(yield ~ rep + soil*fert + Error(rep/fert),data=dat)
    summary(m6)
    

    注意,这里的Error(rep/fert)是R中公式的定义残差,主要用于不同因素使用不同残差的情况,这里fert是主区。

    「结果:」

    > summary(m6)
    
    Error: rep
        Df Sum Sq Mean Sq
    rep  3   6.28   2.093
    
    Error: rep:fert
              Df Sum Sq Mean Sq F value Pr(>F)  
    fert       3  7.221  2.4071   3.562 0.0604 .
    Residuals  9  6.082  0.6758                 
    ---
    Signif. codes:  0 ‘***’  ‘**’  ‘*’  ‘.’  ‘ ’ 1
    
    Error: Within
              Df Sum Sq Mean Sq F value  Pr(>F)   
    soil       2  1.927  0.9633   7.155 46 **
    soil:fert  6  0.688  147   0.852 0.53433   
    Residuals 72  9.693  346                   
    ---
    Signif. codes:  0 ‘***’  ‘**’  ‘*’  ‘.’  ‘ ’ 1
    

    结果可以看出,soil达到极显著,fert不显著,soil和fert的互作不显著。

    9. 正态性检验

    方差分析中,结果是否可信,在于数据是否满足假定条件。方差分析的假定包括数据正态性数据的方差齐次性数据的独立性,其中可以检验的假定有:

    这里,我们介绍如何对数据的正态性进行检验。

    可以使用球性检验(Shapiro-Wilk)检验数据的正态性,也可以用qqplot查看残差的图,判断数据的正态性,也可以对数据做直方图,查看数据的正态性。

    「数据描述:」

    ❝ A classical N, P, K (nitrogen, phosphate, potassium) factorial experiment on the growth of peas conducted on 6 blocks. Each half of a fractional factorial design confounding the NPK interaction was used on 3 of the plots.
    data(npk)
    dat <- npk
    str(dat)
    

    「数据结构:」

    > str(dat)
    '': 24 obs. of  5 variables:
     $ block: Factor w/ 6 levels "1","2","3","4",..: 1 1 1 1 2 2 2 2 3 3 ...
     $ N    : Factor w/ 2 levels "0","1": 1 2 1 2 2 2 1 1 1 2 ...
     $ P    : Factor w/ 2 levels "0","1": 2 2 1 1 1 2 1 2 2 2 ...
     $ K    : Factor w/ 2 levels "0","1": 2 1 1 2 1 2 2 1 1 2 ...
     $ yield: num  49.5 62.8 46.8 57 59.8 58.5 55.5 56 62.8 55.8 ...
    

    一般分析时,我们仅对Y变量进行正态性检验,如果是单因素或者多因素,也可以根据因素分组进行正态性检验,数据量大时,对于稍微偏态的数据,即使不太符合正态分布,也不影响结论。

    这里,我们对yield进行正态性检验

    「作直方图」

    可以看到,yield大体符合正态分布。

    「做qq图」

    使用car软件包中的qqPlot函数。

    library(car)
    qqPlot(dat$yield)
    

    可以看到,数据基本落在置信区间里面,数据符合正态分布。

    「使用Shapiro-Wilk」检验数据正态分布

    > (dat$yield)
    
     Shapiro-Wilk normality test
    
    data:  dat$yield
    W = 0.97884, p-value = 
    

    可以看到,P值为,数据符合正态分布,与上图显示的结果一致。

    10. 齐次性检验

    方差分析中,我们对结果是否自信,在于数据是否满足假定条件,方差分析的假定条件包括数据正态性数据的方差齐次性数据的独立性,其中可以检验的假定有:

    这里,我们介绍如何对数据的齐次性进行检验。齐次性检验,是检验不同样本的总体方差是否相同,是根据特定的模型,需要考虑不同的因子放到模型中,不能单独对某一列变量进行齐次性检验。

    「齐次性检验:」

    「数据描述:」

    ❝ A classical N, P, K (nitrogen, phosphate, potassium) factorial experiment on the growth of peas conducted on 6 blocks. Each half of a fractional factorial design confounding the NPK interaction was used on 3 of the plots.
    data(npk)
    dat <- npk
    str(dat)
    

    「数据结构:」

    > str(dat)
    '': 24 obs. of  5 variables:
     $ block: Factor w/ 6 levels "1","2","3","4",..: 1 1 1 1 2 2 2 2 3 3 ...
     $ N    : Factor w/ 2 levels "0","1": 1 2 1 2 2 2 1 1 1 2 ...
     $ P    : Factor w/ 2 levels "0","1": 2 2 1 1 1 2 1 2 2 2 ...
     $ K    : Factor w/ 2 levels "0","1": 2 1 1 2 1 2 2 1 1 2 ...
     $ yield: num  49.5 62.8 46.8 57 59.8 58.5 55.5 56 62.8 55.8 ...
    

    比如上面数据中,相对N进行单因素方差分析,查看不同N的水平是否满足方差齐次性,可以这样操作:

    「Bartlett检验」

    Bartlett检验可以比较多个总体的方差

    (yield ~ N,data=dat)
    

    结果:

    > (yield ~ N,data=dat)
    
     Bartlett test of homogeneity of variances
    
    data:  yield by N
    Bartlett's K-squared = 7652, df = 1, p-value = 0.8102
    

    结果可以看出,不同的N之间,方差满足齐次性要求。

    「Levene检验」

    Bartlett检验对数据的正态性非常敏感,而Levene检验是一种非参数检验方法,使用范围更广。

    library(car)
    leveneTest(yield ~ N, data=dat)
    

    结果:

    > leveneTest(yield ~ N, data=dat)
    Levene's Test for Homogeneity of Variance (center = median)
          Df F value Pr(>F)
    group  1  0.0054 
          22    
    

    结果可以看出,P值为,大于,说明数据符合方差齐次性。

    11. 多重比较

    这里,我们介绍一下方差分析中的多重比较方法。

    「agricolae包」

    ❝ This package contains functionality for the Statistical Analysis of experimental designs applied specially for field experiments in agriculture and plant breeding.

    「多重比较方法:」

    • LSD
    • scheffe
    • HSD(Tukey)
    • SNK
    • Duncan

    「数据描述:」

    ❝ A classical N, P, K (nitrogen, phosphate, potassium) factorial experiment on the growth of peas conducted on 6 blocks. Each half of a fractional factorial design confounding the NPK interaction was used on 3 of the plots.
    data(npk)
    dat <- npk
    str(dat)
    

    「数据结构:」

    > str(dat)
    '': 24 obs. of  5 variables:
     $ block: Factor w/ 6 levels "1","2","3","4",..: 1 1 1 1 2 2 2 2 3 3 ...
     $ N    : Factor w/ 2 levels "0","1": 1 2 1 2 2 2 1 1 1 2 ...
     $ P    : Factor w/ 2 levels "0","1": 2 2 1 1 1 2 1 2 2 2 ...
     $ K    : Factor w/ 2 levels "0","1": 2 1 1 2 1 2 2 1 1 2 ...
     $ yield: num  49.5 62.8 46.8 57 59.8 58.5 55.5 56 62.8 55.8 ...
    

    「方差分析」 这里对N进行单因素方差分析,block为区组:

    > m9 = aov(yield ~ block + N, data=dat)
    > summary(m9)
                Df Sum Sq Mean Sq F value Pr(>F)   
    block        5  343.3   68.66   3.395 0.0262 * 
    N            1  189.3  189.28   9.360 0.0071 **
    Residuals   17  343.8   20.22                  
    ---
    Signif. codes:  0 ‘***’  ‘**’  ‘*’  ‘.’  ‘ ’ 1
    

    结果可以看到,N因素达到极显著水平

    11.1 LSD多重比较

    ❝ Multiple comparisons of treatments by means of LSD and a grouping of treatments. The level by alpha default is . Returns p-values adjusted using one of several methods
    # LSD
    re1 = (m9,"N")
    re1$groups
    

    结果:

    > re1 = (m9,"N")
    > re1$groups
         yield groups
    1 57.68333      a
    0 52.06667      b
    

    11.2 scheffe多重比较

    ❝ Scheffe 1959, method is very general in that all possible contrasts can be tested for significance and confidence intervals can be constructed for the corresponding linear. The test is conservative.

    代码:

    结果

    > ((m9,"N"))
    $statistics
       MSerror Df        F   Mean       CV  Scheffe CriticalDifference
      20.22284 17 4.451322 54.875 8.194955 2.109816           3.873379
    
    $parameters
         test name.t ntr alpha
      Scheffe      N   2  
    
    $means
         yield      std  r  Min  Max   Q25   Q50    Q75
    0 52.06667 5.377957 12 44.2 62.8 48.30 52.35 55.625
    1 57.68333 5.791347 12 48.8 69.5 54.85 57.85 60.350
    
    $comparison
    NULL
    
    $groups
         yield groups
    1 57.68333      a
    0 52.06667      b
    

    11.3 Tukey多重比较

    ❝ It makes multiple comparisons of treatments by means of Tukey. The level by alpha default is .

    代码:

    # Turkey
    ((m9,"N"))
    

    结果

    > ((m9,"N"))
    $statistics
       MSerror Df   Mean       CV      MSD
      20.22284 17 54.875 8.194955 3.873379
    
    $parameters
       test name.t ntr StudentizedRange alpha
      Tukey      N   2          2.98373  
    
    $means
         yield      std  r  Min  Max   Q25   Q50    Q75
    0 52.06667 5.377957 12 44.2 62.8 48.30 52.35 55.625
    1 57.68333 5.791347 12 48.8 69.5 54.85 57.85 60.350
    
    $comparison
    NULL
    
    $groups
         yield groups
    1 57.68333      a
    0 52.06667      b
    
    

    11.4 SNK多重比较

    ❝ SNK is derived from Tukey, but it is less conservative (finds more differences). Tukey controls the error for all comparisons, where SNK only controls for comparisons under consideration. The level by alpha default is .

    代码:

    结果

    > ((m9,"N"))
    $statistics
       MSerror Df   Mean       CV      MSD
      20.22284 17 54.875 8.194955 3.873379
    
    $parameters
       test name.t ntr StudentizedRange alpha
      Tukey      N   2          2.98373  
    
    $means
         yield      std  r  Min  Max   Q25   Q50    Q75
    0 52.06667 5.377957 12 44.2 62.8 48.30 52.35 55.625
    1 57.68333 5.791347 12 48.8 69.5 54.85 57.85 60.350
    
    $comparison
    NULL
    
    $groups
         yield groups
    1 57.68333      a
    0 52.06667      b
    
    

    11.5 Duncan多重比较

    ❝ This test is adapted from the Newman-Keuls method. Duncan's test does not control family wise error rate at the specified alpha level. It has more power than the other post tests, but only because it doesn't control the error rate properly. The Experimentwise Error Rate at: 1-(1-alpha)^(a-1); where "a" is the number of means and is the Per-Comparison Error Rate. Duncan's procedure is only very slightly more conservative than LSD. The level by alpha default is .

    代码:

    # Duncan
    ((m9,"N"))
    
    

    结果

    > ((m9,"N"))
    $statistics
       MSerror Df   Mean       CV
      20.22284 17 54.875 8.194955
    
    $parameters
        test name.t ntr alpha
      Duncan      N   2  
    
    $duncan
        Table CriticalRange
    2 2.98373      3.873379
    
    $means
         yield      std  r  Min  Max   Q25   Q50    Q75
    0 52.06667 5.377957 12 44.2 62.8 48.30 52.35 55.625
    1 57.68333 5.791347 12 48.8 69.5 54.85 57.85 60.350
    
    $comparison
    NULL
    
    $groups
         yield groups
    1 57.68333      a
    0 52.06667      b
    

    12. 获得所有代码及注释脚本

    公众号回复(R-breeding):R语言方差分析。

    展开全文
  • R语言中dim函数_R 语言的矩阵计算

    千次阅读 2020-11-20 10:14:50
    这方面有需求很棒的内容,转载不了我就直接扣过来了~~对这方面有需求的读者不妨收藏一下...用R语言很好地封装了,矩阵的各种计算方法,一个函数一行代码,就能完成复杂的矩阵分解等操作。让建模人员可以更专注于模型...

    这方面有需求

    很棒的内容,转载不了我就直接扣过来了~~对这方面有需求的读者不妨收藏一下。
    d0bc7c3f4cbef1579e6b502a63f03c9f.png
    作者: 张丹(Conan)来源:http://blog.fens.me/r-matrix/

    前言


    R 是作为统计语言,生来就对数学有良好的支持。矩阵计算作为底层的数学工具,有非常广泛的使用场景。用R语言很好地封装了,矩阵的各种计算方法,一个函数一行代码,就能完成复杂的矩阵分解等操作。让建模人员可以更专注于模型推理和业务逻辑实现,把复杂的矩阵计算交给R语言来完成。
    本文总结了 R 语言用于矩阵的各种计算操作。

    1. 基本操作

    # 生成矩阵 


    取对角线元素,生成对角矩阵:

    # 对角线元素


    上三角,下三角:

    # 上三角


    矩阵转置:

    20,


    对角矩阵填充:

    # 创建方阵


    填充后,发现矩阵并不是对称的,原因是上三角取值按列取值,所以先取 10 后取 13,导致上三角和下三角取值顺序不完全一致。

    16,


    调整后,我们要先转置,再取值再填充,形成对称结构。

    20,


    矩阵和 data.frame 转换,用行列形成索引结构。

    12,

    2. 矩阵计算

    加法,减法。

    # 加载矩阵计算工具包


    矩阵值相乘。

    > m0*m1
         [,1] [,2] [,3] [,4] [,5]
    [1,]   40  395  873  741 1326
    [2,]  186  192  480  112 1710
    [3,]  189   42  616  180  171
    [4,]  112  248  864  432  520


    矩阵乘法,满足第二个矩阵的列数和第一个矩阵的行数相等,所以把上面生成的 m0 矩阵( 4 行 5 列)转置为( 5 行 4 列),再用 m1 矩阵( 4 行 5 列),进行矩阵乘法,得到一个 5 行 5 列的结果矩阵。

    > t(m0)%*%m1
         [,1] [,2] [,3] [,4] [,5]
    [1,]  527  285  649  217  399
    [2,] 1423  877 1741  633 1231
    [3,] 2319 1469 2833 1049 2063
    [4,] 3215 2061 3925 1465 2895
    [5,] 4111 2653 5017 1881 3727

    # 通过函数实现矩阵相乘
    > crossprod(m0,m1)
         [,1] [,2] [,3] [,4] [,5]
    [1,]  527  285  649  217  399
    [2,] 1423  877 1741  633 1231
    [3,] 2319 1469 2833 1049 2063
    [4,] 3215 2061 3925 1465 2895
    [5,] 4111 2653 5017 1881 3727


    矩阵外积。

    6,


    矩阵直和。

    4,


    矩阵直积。

    4,

    3. 矩阵性质

    3.1 奇异矩阵

    首先,我们线创建一个非奇异矩阵,判断非奇异矩阵方法,行列式不等于 0,矩阵可逆,满秩。

    # 创建一个非奇异矩阵


    再创建一个奇异矩阵,判断奇异矩阵方法包括,行列式等于 0,矩阵不可逆,不是满秩。

    # 奇异矩阵

    3.2 逆矩阵

    # 创建方阵,非奇异矩阵
    > m0100,16),4,4);m0
         [,1] [,2] [,3] [,4]
    [1,]   24   31   80   37
    [2,]   84   13   42   71
    [3,]   95   62   93   86
    [4,]   69   16   94   35# 计算矩阵的逆矩阵
    > solve(m0)
                [,1]          [,2]        [,3]         [,4]
    [1,] -0.03083680 -0.0076561475  0.01258023  0.017218514
    [2,] -0.01710957 -0.0270246488  0.03152548 -0.004553923
    [3,]  0.01384721 -0.0003070371 -0.00886117  0.007757524
    [4,]  0.03142440  0.0282722871 -0.01541411 -0.024126340# 逆矩阵的性质,逆矩阵与原矩阵进行矩阵乘法,得到对角矩阵。
    > round(solve(m0) %*% m0)  # 对角矩阵
         [,1] [,2] [,3] [,4]
    [1,]    1    0    0    0
    [2,]    0    1    0    0
    [3,]    0    0    1    0
    [4,]    0    0    0    1


    广义逆矩阵,将逆矩阵的概率推广到奇异矩阵和长方形矩阵上,就产生了广义逆矩阵。

    # 创建奇异矩阵


    用 ginv 函数计算非奇异矩阵,和 solve() 函数比较。

    # 非奇异矩阵


    逆矩阵的特性。

    16,

    3.3  特征值和特征向量

    # 创建一个方阵


    当 symmetric=TRUE 时,计算对称矩阵的特征值和特征向量,当 m0 不是对称矩阵时,则取下三角对称结构进行计算。

    TRUE)

    4. 矩阵分解

    下面将介绍 4 种矩阵常用的分解的方法,包括三角分解 LU,choleskey 分解,QR 分解,奇异值分解 SVD。

    4.1 三角分解 LU

    三角分解法是将原方阵分解成一个上三角形矩阵和一个下三角形矩阵,这样的分解法又称为 LU 分解法。它的用途主要在简化一个大矩阵的行列式值的计算过程,求逆矩阵,和求解联立方程组。这种分解法所得到的上下三角形矩阵不唯一,一对上三角形矩阵和下三角形矩阵,矩阵相乘会得到原矩阵。

    # 创建一个矩阵

    4.2 choleskey 分解

    Cholesky 分解是把一个对称正定的矩阵表示成一个下三角矩阵L和其转置的乘积的分解。它要求矩阵的所有特征值必须大于零,故分解的下三角的对角元也是大于零的。Cholesky 分解法又称平方根法,是当A为实对称正定矩阵时,LU 三角分解法的变形。

    # 创建对称方阵

    4.3 QR 分解

    QR 分解法是将矩阵分解成一个正规正交矩阵与上三角形矩阵,所以称为 QR 分解法,与此正规正交矩阵的通用符号 Q 有关。

    # 创建对称方阵

    4.4 奇异值分解 SVD

    奇异值分解 (singular value decomposition, SVD) 是一种正交矩阵分解法。SVD 是最可靠的分解法,但是它比 QR  分解法要花上近十倍的计算时间。[U,S,V]=svd(A),其中 U 和 V 分别代表两个正交矩阵,而 S 代表一对角矩阵。和 QR 分解法相同, 原矩阵 A 不必为正方矩阵。使用 SVD 分解法的用途是解最小平方误差法和数据压缩。

    # 创建对称方阵

    5. 特殊矩阵

    下面介绍的多种特殊矩阵,都是在 matrixcalc 库中提供的。

    5.1 Hankel Matrix

    汉克尔矩阵 (Hankel Matrix) 是具有恒定倾斜对角线的方形矩阵。Hankel 矩阵的行列式称为 catalecticant。该函数根据 n 向量 x 的值构造 n 阶 Hankel 矩阵。矩阵的每一行是前一行中值的循环移位。
    矩阵定义:

    468452b712aa44acbd0e7be351aa509b.png
    6, 

    5.2 Hilbert Matrix

    希尔伯特矩阵是一种数学变换矩阵,正定,且高度病态(即,任何一个元素发生一点变动,整个矩阵的行列式的值和逆矩阵都会发生巨大变化),病态程度和阶数相关。希尔伯特矩阵是一种特殊的汉克尔矩阵,该函数返回 n 乘 n 希尔伯特矩阵。
    矩阵定义:

    091465650b32c4717ee329a754ccdfca.png
    4)

    5.3 Creation Matrix

    创造矩阵,n 阶创建矩阵也称为推导矩阵,该函数返回阶数 n 创建矩阵,在主对角线下方的子对角线上具有序列 1,2,…,n-1 的方阵。
    矩阵定义:

    cf04e4fdcde1c0375ecfa9fff6a7408c.png
    5)  

    5.4 Stirling Matrix

    斯特林公式(Stirling’s approximation)是一条用来取n的阶乘的近似值的数学公式。一般来说,当 n 很大的时候,n 阶乘的计算量十分大,所以斯特林公式十分好用,而且,即使在 n 很小的时候,斯特林公式的取值已经十分准确。
    斯特林矩阵(Stirling Matrix),该函数构造并返回斯特林矩阵,该矩阵是包含第二类斯特林数的下三角矩阵。
    矩阵定义:

    b297cc4439a7748d1e7ca5c75f2f4f15.png
    4)

    5.5 Pascal matrix

    帕斯卡矩阵:由杨辉三角形表组成的矩阵称为帕斯卡(Pascal)矩阵。此函数返回 n 乘以 Pascal 矩阵。在数学中,尤其是矩阵理论和组合学,Pascal 矩阵是一个下三角矩阵,行中有二项式系数。通过对相同顺序的对称 Pascal 矩阵执行 LU 分解并返回下三角矩阵,可以容易地获得它。
    帕斯卡的三角形是由数字行组成的三角形。第一行具有条目1.每个后续行通过添加前一行的相邻条目而形成,替换为 0,其中不存在相邻条目。pascal 函数通过选择与指定矩阵维度相对应的 Pascal 三角形部分来形成 Pascal 矩阵。
    矩阵定义:

    d37bdd9ab89f045a870c60aa4957e331.png
    4)

    5.6 Fibonacci matrix

    斐波纳契矩阵,该函数构造了从 Fibonacci 序列导出的 n + 1 平方 Fibonacci 矩阵。
    计算公式:

    ac9319d4a0b351934ab667c5babd8434.png
    4)

    5.7 Frobenius Matrix

    Frobenius 矩阵也称为伴随矩阵,它出现在线性一阶微分方程组的解中。此函数返回一个在数值数学中有用的 Fronenius 矩阵。
    矩阵定义:

    085137484a9fbc8d583c04406ac64bfa.png
    4)

    5.8 Duplication matrix

    复制矩阵,当 A 是对称矩阵时,该函数构造将 vech(A)映射到 vec(A)的线性变换 D。
    计算公式:

    d0cbcb7971fac2481fd7ccddf29eac1e.png
    3) 

    5.9 K matrix

    k 矩阵是由 H.matrices() 函数构造的,利用直积进行计算子列表的分量。K.matrix(r, c=r) ,返回阶数为 p=r*c  的方阵,对于 r 行 c 列的矩阵 A,计算 A 和 t(A) 的直积。
    计算公式:

    75da021c9132b3858ca0f74f27cd5486.png
    2,

    5.10 E Matrices

    E 矩阵列表, E.matrices(n) 使得每个子列表的分量,是从 n 阶单位矩阵计算向量的外积导出的方阵。
    计算公式:

    72fa486871159959e148e02ab105b6e5.png
    3)

    5.11 H Matrices

    H 矩阵列表, H.matrices(r, c=r) 使得 r 阶 c 阶的子列表的分量,计算从 r 行和 c 列的单位矩阵的列向量的外积导出的方阵。

    2,

    5.12 T Matrices

    T 矩阵列表, T.matrices(n) 高级别列表中的组件数为 n。n 个组件中的每一个也是列表。每个子列表具有 n 个分量,每个分量是 n 阶矩阵。
    计算公式:

    51e0ea718b22de3719af900f1b126b9f.png
    3)


    通过 R 语言,我们实现了对于矩阵的各种计算操作,非常方便!有了好的工具,不管是学习还是应用,都会事半功倍。本文只是列举了矩阵的操作方法,没有解释计算的推到过程,推到过程请参考线性代码的教科书。

    8fbe7c6d1a164c19680809d1cc5d0d24.png— END—

    f6aa279f7386acafa076807e23123ee2.png

    展开全文
  • R中主要的循环函数(loop functions)有 lapply( )、sapply( )、apply( )、tapply( ) 和 mapply( )。lapply( )lapply( )对列表每个元素,包括各种类型的对象(向量、矩阵、数据框等),运用函数,返回一个新的列表。...
  • R语言最优秀的是它的向量化编程,这其中apply族函数扮演了非常重要的角色。apply族函数是由apply、sapply、lapply、mapply、tapply等函数组成的。熟练使用apply族函数,能够简化程序,提高代码的运算速度。软件&...
  • 欢迎关注小号:医学统计数据分析,今天我们来介绍一下医学统计学常用统计学方法的R语言基本操作。 R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计...
  • 原文链接:R语言中实现层次聚类模型​tecdat.cn大家好!在这篇文章,我将向你展示如何在R进行层次聚类。 什么是分层聚类?分层聚类是一种可供选择的方法,它可以自下而上地构建层次结构,并且不需要我们事先指定...
  • 原文链接:在R语言中使用概率分布:dnorm,pnorm,qnorm和rnorm​tecdat.cn在这里,我将讨论哪些函数可用于处理正态分布:dnorm,pnorm,qnorm和rnorm。R的分布函数 有四个关联的函数, 四个正态分布函数是:d范数...
  • R语言dim函数返回NULL

    2021-09-04 19:56:10
    R语言dim函数返回NULL 目录 R语言dim函数返回NULL 问题: 解决: dim函数可以返回dataframe、maitrix的shape; 一个常见的错误是将dim应用于一维向量或数组。 问题: vec1 <- c(5, 9, - 20, 3,...
  • R语言中常见函数解释

    千次阅读 2018-04-09 21:58:46
    R语言中常见函数解释 subset():从某一个数据框,选择出符合某条件的数据或者相关列 # 提取wine数据集中除quality列以外的数据作为自变量 x=subset(wine,select=-quality) # 确定矩阵每行最大值所在的...
  • R语言dim函数获取dataframe、matrix的维度、shape实战 目录 R语言dim函数获取dataframe、matrix的维度、shape实战 #基本语法 #dim获取数据的shape #获取所有列表项的维度 #基本语法 dim(data) #dim获取...
  • R语言入门——常用函数50个

    千次阅读 2021-09-05 12:41:55
    R语言函数入门50个基本函数0引言1、入门准备操作及函数1.1R版本介绍以及IDE的选择1.2IDE及其常用的快捷键2、空间操作以及纠错函数2.1 ? 、??、help、demo、example2.2 ls()2.3 getwd()、setwd()2.4 其他函数2.5...
  • R语言有三种方式实现循环:(1)for循环、while循环(2)apply函数族(3)泛型函数map一. for循环、while循环首先作两点说明:(1)关于“for循环运行速度慢”的说法,实际上已经过时了,现在的R、Matlab等软件经过...
  • R语言中的常用函数

    千次阅读 多人点赞 2017-03-22 13:24:42
    语言的数学运算和一些简单的函数整理如下: 向量可以进行那些常规的算术运算,不同长度的向量可以相加,这种情况下最短的向量将被循环使用。   改变编译环境的语言(英语) Sys.setenv(LANGUAGE="en") ...
  • R语言学习记录:array()函数

    千次阅读 2021-02-18 19:35:12
    R语言中,数组使用array()函数创建。array()函数的语法格式如下所示: array( data = NA, dim = length(data), dimnames = NULL) data为创建数组的元素; dim为数组的维数,是数值型向量; dimnames是各维度
  • R语言函数调用

    千次阅读 2020-07-05 10:01:11
    整理了数据处理一些使用的函数
  • 今天介绍一些运算函数,它们的使用很简单,没有什么难度,但是也会用的着。在医学统计学或者流行病学里的现场调查、样本选择经常会提到一个词:随机抽样。随机抽样是为了保证各比较组之间均衡性的一个很重要的方法。...
  • R语言常用函数详解

    千次阅读 2021-05-22 05:18:11
    R语言对于我们生信人员来讲,再熟悉不过,然而任何一门语言想要学好,必须经过常年的日积月累才可以做到,在这里,我列举R中常用的函数的用法, 供大家学习。1.序列函数seq用法: seq(form,to,length.out(or by))seq...
  • 那么今天我们就来总结下在R语言中那些注释函数。首先,我们看下文本注释函数:text(),mtext(), legend()。这些函数都是R语言内置的基础函数,我们看下具体的实例:1. text() 注释绘图的任意点。其中主要的参数是...
  • R语言基本操作函数

    千次阅读 2021-05-25 03:41:29
    其它详细情况参考apply函数min(x):返回x最小的元素,同maxrev(x) 翻转x的所有元素sort(x) 升序排列x的元素;降序排列使用rev(sort(x)),要得到排列的小标用order()choose(n,k) 组合数计算which() 返回满足条件...
  • R语言常用函数

    千次阅读 2020-12-21 18:48:02
    R语言常用函数基本一、数据管理vector:向量numeric:数值型向量logical:逻辑型向量character;字符型向量list:列表data.frame:数据框c:连接为向量或列表length:求长度subset:求子集seq,from:to,sequence:...
  • R语言基础语法

    千次阅读 2016-01-03 10:20:55
    dim()函数使用 A,描述 检索和设置对象的范围 B,用法 dim(x) dim(x) (和等号的意思一样) R对象,例如一个矩阵,阵列或数据帧。 C,dim()有一个方法为data.frames,它返回x的row.names的长度属性和x的(如行...
  • 前言Apply系列函数作为R语言中用于替换for和while循环的利器,在批量循环计算的过程发挥着非常重要的作用,其他的R包如dplyr,plyr和data.table的很多数据操作思路和apply系列函数有很多的借鉴和相似之处,最经典...
  • R语言常用函数整理

    千次阅读 2020-10-21 08:45:43
    R语言基础函数整理 R语言常用函数整理本篇是基础篇,即R语言自带的函数。 一、数据管理 vector:向量 numeric:数值型向量 logical:逻辑型向量 character;字符型向量 list:列表 data.frame:数据框 c:连接为...
  • R语言的常用函数

    2021-05-22 01:15:42
    ,help,help.start,apropos:帮助功能data:列出数据集统计计算 一、统计分布 每一种分布有四个函数:d――density(密度函数),p――分布函数,q――分位数 函数r――随机数函数。比如,正态分布的这四个函数...
  • attr(base)attr()所属R语言包:baseObjectAttributes对象的属性译者:生物统计家园网机器人LoveR描述----------Description----------Get or setspecific attributes of an object.获取或设置一个对象的特定属性。...
  • R语言 截图工具 方法/步骤1: 第一步,定义五个向量name、age、sex、addr和he,分别表示人的姓名、年龄、性别、地址和身高,如下图所示: 方法/步骤2: 第二步,定义一个数据帧person,使用data.frame()函数...
  • 前言apply函数族是R语言中数据处理的一组核心函数,通过使用apply函数,我们可以实现对数据的循环、分组、过滤、类型控制等操作。但是,由于在R语言中apply函数与其他语言循环体的处理思路是完全不一样的,所以apply...
  • cbind: 根据列进行合并,即叠加所有列,m列的矩阵与n列的矩阵cbind()最后变成m+n列,合并前提:cbind(a, c)矩阵a、c的行数必需相符rbind: 根据行进行合并,就是行的叠加,m行的矩阵与n行的矩阵rbind()最后变成m+...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,258
精华内容 4,503
关键字:

r语言中dim函数

友情链接: 99.zip