许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  R语言基础学习教程

R语言基础学习教程

阅读数 7
点赞 0
article_banner

R程序包

在CRAN 提供了每个包的源代码和编译好的程序包

以vegan包为例,CRAN提供了:

Package source: vegan_1.17-2.tar.gz

MacOS X binary: vegan_1.17-2.tgz

Windows binary: vegan_1.17-2.zip

Reference manual: vegan.pdf

Window下程序包为zip文件,安装时不要解压缩

 

安装程序包的方法

1 用函数 install.packages()

如果已经连接到互联网,在括号中输入要安装的程序包名称,选择镜像后,程序将自动下载并安装程序包。

例如: 要安装picante包,在控制台中输入

install.packages("picante") #R将自动下载并安装Rcmdr所需的所有程序包

2 安装本地zip

路径:Packages>install packages from local files

选择本地磁盘上存储zip包的文件夹

3 此导入程序包的方法:

程序包中的函数,都要先导入,再使用

例如:

library(vegan) library(ade4)

4 查看函数的帮助文件

函数的默认值是什么? 怎么使用? 使用时需要注意什么问题? 需要查询函数的帮助。

1 ?t.test 2 RGui>Help>Html help 3 apropos("t.test") 4 help("t.test") 5 help.search("t.test") 6 查看R包pdf手册

帮助文件的内容

•lm{stats} #函数名及所在包 •Fitting Linear Models #标题 •Description #函数描述 •Usage #默认选项 •Arguments #参数 •Details #详情 •Author(s) #作者 •References #参考文献 •Examples #举例

遍历数组

k in 1:n, n 为正整数)。

5 R语言基本 数据类型  

元素的类型 数值型 Numeric 如 100, 0, -4.335 字符型 Character 如 “China” 逻辑型 Logical 如TRUE, FALSE 因子型 Factor 表示不同类别 复数型 Complex 如:2 + 3i 对象的类(class) 向量(vector) 一系列元素的组合。 如 c(1,2,3); c("a","a","b","b","c") 因子(factor) 因子是一个分类变量 c("a","a","b","b","c") 矩阵(matrix) 二维的数据表,是数组的一个特例 x <- 1:12 ; dim(x) <- c(3,4) [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12

数组(array)

数组是k维的数据表(k in 1:n, n 为正整数)。

向量(n = 1) 矩阵(n = 2) 高维数组(n >= 3)

数据框(dataframe)

是由一个或几个向量和(或)因子构成,它们必须是等长的,但可以是不同的数据类型。

•两种办法生成数据框:

•(1)从外部数据读取

•(2)各类型因子组合成数据框

列表(list)

列表可以包含任何类型的对象。

可以包含向量、矩阵、高维数组,也可以包含列表

向量的创建:四种类型的向量

#向量的创建

#生成向量的函数 c(),rep(),seq(),”:”

c(2,5,6,9)

rep(2,times=4)

seq(from=3, to=21, by=3 )

#字符型的创建

character<-c("China", "Korea", "Japan", "UK", "USA", "France",  "India", "Russia")

#数值型的创建

numeric<-c(1, 3, 6, 7, 3, 8, 6, 4)

#逻辑型的创建

logical<-c(T, F, T, F, T, F, F, T)

复数型 略

向量创建——产生随机数(相关函数)

runif(10, min = 0, max= 1)rnorm(10, mean = 0, sd = 1) 几个随机数的相关函数概率密度dunif(x, min=0, max=1, log = FALSE) 累积函数punif(q, min=0, max=1, …) 分位数qunif(p, min=0, max=1, …) 随机均匀分布runif(n, min=0, max=1)

     

创建矩阵

#创建一3行4列的矩阵 #方法一x <- 1:12dim(x) <- c(3,4) #方法二matrix.x <- matrix(1:12,nrow=3,byrow=T)    #matrix默认按列填充。增加参数byrow=T,按行填充t(x)#转置 为行或列添加名称:row.names() col.names()数据框的创建#创建数据框的函数:data.frame(), as.data.frame(), cbind(), rbind()cbind() # 按列组合成数据框rbind() # 按行组合成数据框data.frame() #生成数据框head() #默认访问数据的前6行

创建列表

x <- list(id=1:4, height=170, gender="male") x["id"]x[[1]]    #x[1]:是一个链表(list)    x[[1]] :是一个数 x[["id"]]x$idx[c(1,3)] #假设list1 list2是两个list。可以用c()合并listlist <- c(list1, list2); #可以通过unlist()把列表中的所有元素转换为向量元素,转换后的向量元素的个数和列表中所有数据对象的个数相同。该操作将把列表中不同类型的数据转为统一的类型,这意味着大多数情况下把所有列表数据转换为字符型。unlist(list)

引用

向量内的元素引用

### Dalgaard书中的例子intake.pre <- c(5260, 5470, 5640, 6180, 6390, 6515, 6805, 7515,  7515, 8230, 8770)intake.post <- c(3910, 4220, 3885, 5160, 5645, 4680, 5265, 5975,  6790, 6900, 7335)intake.pre[5]; #引用第5个元素intake.pre[c(3,5,7)] #引用第3,5,7个元素v <- c(3,5,7); intake.pre[v];intake.pre[1:5]; #引用第1到5个元素intake.pre[-c(3,5,7)] #去除第3,5,7元素

数据框内元素的引用

intake <- data.frame(intake.pre, intake.post)引用数据框中的元素(1) $ 引用列,后面为列的名称例如 intake$intake.pre (2) [,]方括号引用,逗号前为行,逗号后为列intake[,1]; 引用第1列intake[5,]; 引用第5行intake[5,1]; 引用第1列,第5行i = 1:5; intake[i,] 引用1到5行

数据框内元素的操作

attach()#假设data.frame包含列name,age#attach(onedata.frame)后就可以引用直接引用onedata.frame中的元素了,例如:函数attach()的反向操作是detach(),他禁止直接访问数据框的列 查询数据框的行,列数nrow(data.frame)    #返回数据框的行总数ncol(data.frame)    #返回数据框的列总数 #编辑数据框edit()函数,会弹出可视化的编辑框,然后进行数据的编辑操作#编辑已经存在的数据框new.frame <- edit(oldFrame) #编辑已经新的数据框nev.data <- edit(data.frame)names(my.dataset) <- c("name1", "name2", "name3")    #重新命名数据框的列名

#获得R自带的数据集

data()

#通过以下命令应用已有的数据集

data(CO2)    #数据框名CO2,然后就可以操作数据框CO2中的数据

列表内元素的引用

列表内元素的引用可以用”[[]]”

如 list1[[c(1,2,3)]]

上述放于”[]”内的数字,称为下标

排 序

#将向量中的元素按照一定顺序排列,order() 默认给出从小到大的出现序号。

sort() 按数值大小排序

6 外部数据读取

最为常用的数据读取方式是用read.table() 函数或read.csv()函数读取外部txt或csv格式的文件。

txt文件,制表符间隔

csv文件,逗号间隔

一些R程序包(如foreign)也提供了直接读取Excel, SAS, dbf, Matlab,  spss, systat, Minitab文件的函数。

         read的使用

#例:1:test.data<-read.csv("https://www.gofarlic.com/R/test2.csv",header=T)# header=T表示将数据的第一行作为标题。2:read.table(file=file.choose(),header=T) #可以弹出对话框,选择文件data1<-read.table("d:/t.test.data.txt",header=T)

7 #t检验

#检验体重除以身高的平方是否等于22.5height<-c(1.75, 1.80, 1.65, 1.90, 1.74, 1.91)weight<-c(60, 72, 57, 90, 95, 72)sq.height<-height^2ratio<-weight/sq.heightt.test(ratio, mu=22.5)

8 类的判断

对象类型判断

mode() 判断存储的类型 class() 判断数据的类 根据数据的类,采用相应的处理方法。 以下函数,主要用在函数处理异常时使用,目的是增强程序的稳健性。 is.numeric() #返回值为TRUE或FALSE is.logical() #是否为逻辑值 is.charactor() #是否为字符串 is.null() #是否为空 is.na() #是否为na

类的转换

as.numeric() #转换为数值型 as.logical() #转换为逻辑型 as.charactor() #转换为字符串 as.matrix() #转换为矩阵 as.data.frame() #转换为数据框 as.factor() #转换为因子

10 工作空间 image

R的所有对象都在计算机内存的工作空间中。 ls() 列出工作空间中的对象rm() 删除工作空间中的对象rm(list=ls()) 删除空间中所有对象save.image() 保存工作镜像sink() 将运行结果保存到指定文件中getwd() 显示当前工作文件夹setwd() 设定工作文件夹 可将结果保存在image中,形式为.Rdata文件,里面保存了R当前工作空间中的各种对象,包括函数。

#设置R的工作路径

#将R工作的路径设置为 d:/data/setwd("d:/data")save.image("example.Rdata")load("example.Rdata")

11 运行脚本 三种运行方式

1 通过source()函数运行    source("d:/regression.r")2 通过R脚本编辑器运行    路径:RGui>File>Open Script #Ctrl+R运行3 直接粘贴到R控制台    ctrl+c, ctrl+v 第三种最为简单直接

补充函数

attach()#假设data.frame包含列name,age#attach(onedata.frame)后就可以引用直接引用onedata.frame中的元素了,例如: 在函数内部,对数据进行相应调整 with() #with函数内部形成一个空间,在这个空间中,函数可以对列访问。within()transform() #数据的转换,如取logsubset() #取数据的子集apply() #对数据表或矩阵应用某个函数,可减少循环

12 编写函数

#R可以灵活的编写程序,用户自己编写的程序可以直接调用。编程时无需声明变量的类型,这与C,C++等语言不同。

#基本格式

函数名 <- function(数据,参数1= 默认值,…){    异常处理;    表达式(循环/判别);    return(返回值);}

函数内部也可用#添加注释

返回值

•返回值表示函数输出的结果。 •返回值必须是一个对象。 •R默认将最后一行作为返回值。 •如果函数的结果需要有多个返回值,可以创建一个list(),并返回该对象。 •也可以用return()函数,设定返回值。 •但是一个函数的返回的对象只有一个。

异常处理

#•如数据输入不能满足要求,或者参数设定错误等等,可能造成函数给出错误的结果,则需要对函数的运行过程发出警告或终止,以提高程序的稳健性。 #•警告的写法 if(any(is.na(inputdata)))    inputdata <- na.omit(inputdata)    cat(“NAs are found in the input data, and has been removed.\n") •终止的写法if(any(is.na(xx)))    stop("NAs are not allowed!\n")

程序流程控制 if

if(条件) 表达式if(条件) 表达式1 else 表达式2 #举例p = 0.03{    if(p<=0.05)        print("p <= 0.05!")    else        print("p > 0.05!")}

循环 for, while

for(变量 in 向量) 表达式#用法:for(i in 1:10) print(i)  while(条件) 表达式#用法:i <- 1while(i<10){    print(i)    i <- i + 1}

函数举例

#问题:输入直角三角形的两个边长,求其斜边长。#定义函数:rcal <- function(x,y){    z <- x^2 + y^2    result <- sqrt(z)    return(result)} #调用函数:rcal(3,4)

13 数据保存

write.table()write.csv()save.image()sink()unlink()#若有LaTeX基础,可以用Sweave() 函数#该函数能将脚本、程序说明和运算结果直接保存成.tex文件,用LaTeX编译成pdf文件。

14 附录

推荐的教材

•Crawley Statistics an introduction using R•Peter Dalgaard Introductory statistics with R•E. Paradis R for Beginners•Verzani SimpleR.•D G Rossiter Introduction to the R Project for Statistical Computing  for use at ITC•J. Maindonald Using R for data analysis and graphics introduction  code and commentary using R•Venables, W. N. & Ripley, B. D. Modern Applied Statistics with S

R网络资源

R主页: http://www.r-project.orgR资源列表 NCEAS http://www.nceas.ucsb.edu/scicomp/software/rR Graphical Manual http://bm2.genes.nig.ac.jp/RGM2/index.php统计之都: http://cos.name/QuikR http://www.statmethods.net/丁国徽的R文档: http://www.biosino.org/R/R-doc/R语言中文论坛 http://rbbs.biosino.org/Rbbs/forums/list.page

R语言画图函数见:https://blog.csdn.net/LiuHuan_study/article/details/85547943


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空