[实用参考]R语言入门(经典)

R-2.9.2-win32.exe 下载完成后,双击R-2.9.2-win32.exe 开始安装。
一直点击下一步,各选项默认。
图1 R软件首页 /
菜单栏 快捷按钮
控制台
命令行
图2 R2
程序包使用
在控制台中输入如下命令: library(vegan) library(ade4) 调用程序包内的函数与R内置的函数调用方法一样 library(vegan) This is vegan 1.15-3 Warning message: package 'vegan' was built under R
练习三 查看帮助文件
打开ape软件包的帮助文件 library(ape) 查找ape包中plot.phylo函数的帮助 输入 ?plot.phylo 将其中的Example文件粘贴到Console中,查看
以vegan包为例,CRAN提供了: Package source: vegan_1.15-3.tar.gz MacOS X binary: vegan_1.15-3.tgz Windows binary: vegan_1.15-3.zip Reference manual: vegan.pdf 等 Window平台下程序包为zip文件,安装时不要解压缩。
version 2.9.1
练习二 安装并导入程序包
安装程序包 程序包>从本地zip文件安装程序包 调用程序包 library(vegan) library(ape)
查看帮助文件
如何知道ape程序包内部都有哪些函数? 最常用的方法: 1 菜单 帮助>Html帮助 2 查看pdf帮助文档(从程序包下载页面下载)
建立模型,具有良好的扩展性,取得了巨大成功。 1995年由新西兰Auckland大学统计系的Robert Gentleman
和Ross Ihaka,编写了一种能执行S语言的软件,并将该 软件的源代码全部公开,这就是R软件,其命令统称为R 语言。
R软件简介
R是开源软件,代码全部公开,对所有人免费。 R可在多种操作系统下运行,如Windows、MacOS、 多种Linux和UNIX等。 R需要输入命令,可以编写函数和脚本进行批处理 运算,语法简单灵活。 目前在R网站上约有2100个程序包,涵盖了基础统 计学、社会学、经济学、生态学、地理学、医学统计 学、生物信息学等诸多方面。
R程序包安装
1 连网时,用函数install.packages(), 选择镜像后,程序将自动下载并安装程序包。 例如: 打开RGui,在控制台中输入
install.packages(“ape")
2 安装本地zip包 路径:Packages>install packages from
local files 选择光盘或者本地磁盘上存储zip包的文件夹。
语言入门
报告内容
一 R简介 二 函数与对象 三 编写脚本 四 R绘图 五 编写函数 六 数据保存
一R简介
R语言的由来
R语言是从S语言演变而来的。 S语言是二十世纪70年代诞生于贝尔实验室,由Rick
Becker, John Chambers, Allan Wilks开发。 基于S语言开发的商业软件Splus,可以方便的编写函数、
图3 R Gui 的菜单介绍
练习一:下载和安装R
下载并安装R软件 了解R的菜单
R程序包
为什么要安装程序包? 特定的分析功能,需要用相应的程序包实现。 例如:系统发育分析,往往要用到ape程序包,群落生态 学vegan包等等。 程序包是什么? R程序包是多个函数的集合,具有详细的说明和示例。 Window下的R程序包是已经编译好的zip包。 每个程序包包含R函数、数据、帮助文件、描述文件等。
常用R程序包
maptools- 空间对象的读取和处理
sp-
空间数据处理
spatstat- 空间点格局分析,模型拟合与检验
splancs- 空间与时空点格局分析
picante- 群落系统发育多样性分析
图4 CRAN Task Views: 对程序包的分类介绍
图5 vegan包页面
R程序包
在CRAN 提供了每个包的源代码和编译好的MacOS、 Window下的程序包
常用R程序包
base-
R 基础功能包
stats-
R统计学包
nlme-
线性及非线性混合效应模型
Graphics- 绘图
lattice-
栅格图
ape-
系统发育与进化分析
apTreeshape- 进化树分析
seqinr-
DNA序列分析
ade4- 利用欧几里得方法进行生态学数据分析
常用R程序包
cluster- 聚类分析 ecodist- 生态学数据相异性分析 mefa- 生态学和生物地理学多元数据处理 mgcv- 广义加性模型相关 mvpart- 多变量分解 nlme- 线性及非线性混合效应模型 ouch- 系统发育比较 BiodiversityR - 基于Rcmdr的生物多样性数据分析 vegan- 植物与植物群落的排序,生物多样性计算
下载和安装R
The Comprehensive R Archive Network 简称CRAN,提供下载安装程序和相应软件包。 R主页 / Windows版本下载地址之一: /mirrors/CRAN/bin/windows/base/
查看帮助文件
1 help("t.test") 2 ?t.test 3 help.search("t.test") 4 apropos("t.test") 5 RGui>Help>Html help 6 查看R包pdf手册
帮助文件的内容
以lm函数为例: lm(stats) #函数名及所在包 Fitting Linear Models # 标题 Description #函数描述 Usage # 默认选项 Arguments # 参数 Details # 详情 Author(s) # 作者 References # 参考文献 Examples # 举例
合集下载

R语言傻瓜教程1基础

R语言傻瓜教程1基础

R语言傻瓜教程1基础R语言是一个强大的统计分析工具,也是数据科学领域使用最广泛的编程语言之一、本教程将为您提供R语言的基础知识和操作技巧,适合初学者快速入门。

1. 安装R和RStudio2.R语言基本语法R语言的基本语法与其他编程语言类似,包括赋值、运算符、条件语句和循环等基本操作。

下面是一些常用的语法示例:-赋值操作:使用符号“<-”或“=”进行赋值,例如x<-5或x=5-运算符:包括加法“+”,减法“-”,乘法“*”,除法“/”,幂运算“^”,取余运算“%%”等。

- 条件语句:使用if-else语句进行条件判断,例如if (x > 5) {print("大于5")} else {print("小于等于5")}。

- 循环:使用for循环或while循环进行重复操作,例如for (i in 1:5) {print(i)}。

3.基本数据类型R语言中有多种数据类型,包括数值型、字符型、逻辑型、向量、矩阵、数据框等。

下面是一些常见的数据类型及其操作:-数值型:表示数值数据,可以进行各种数学运算,例如x<-5- 字符型:表示字符串,使用单引号或双引号括起来,例如x <- "Hello World"。

-逻辑型:表示真假值,只有TRUE和FALSE两个取值,用于逻辑判断,例如x<-TRUE。

-向量:表示一维数组,可以包含多个元素,使用c(函数创建,例如x<-c(1,2,3,4,5)。

- 矩阵:表示二维数组,可以进行矩阵运算,例如x <- matrix(1:9, nrow = 3, ncol = 3)。

- 数据框:表示表格型数据,类似于Excel的表格,可以进行数据处理和分析,例如x <- data.frame(name = c("Alice", "Bob", "Charlie"), age = c(20, 25, 30))。

R语言入门

R语言入门
包的安装是指从某个CRAN镜像站点下载它并 将其放入库中的过程。要在R会话中使用它,还需 要使用Library()命令载入这个包。例如,要使用 gclus包,执行命令library(gclus)即可。
R语言介绍
四、R的使用
R是一种区分大小写的解释型语言。你可以在命令提示符(> )后每次输入并执行一条命令。
基本绘图
1、条形图
1.1 简单的条形图
例. 使用”vcd”包中的数据集Arthritis(关于一项探索类 风湿性关节炎新疗法的研究结果)画条形图:
> install.packages(“vcd”) > library(vcd) > counts <- table(Arthritis$Improved)
标准差以及月龄和体重的相关度。 plot():用图形展示月龄与体重的关系。
目录
1 2 3 4
R语言介绍 创建数据集
基本绘图 回归分析
创建数据集
数据集通常是由数据构成的一个矩形数组。按照个人要求的格式 来创建含有研究信息的数据集,这是任何数据分析的第一步。在R中 ,这个任务包括以下两步:
选择一种数据结构来存储数据; 将数据输入或导入到这个数据结构中。
创建数据集
二、数据的输入
导入Excel数据:①读取一个Excel文件的最好方式,就是在Excel中将 其导出为一个逗号分隔文件(csv),再导入。
②也可以用xlsx包直接地导入Excel工作。此方式需要先下载和安装 xlsxjars和rJava包,以及一个正常工作的Java安装( )
R语句由函数和赋值构成。R使用<-,而不是传统的=作为赋 值符号。例如:x<-rnorm(5)
*创建了一个名为x的向量对象,它包含5个来自标准正态分布 的随机偏差。

R语言入门和使用技巧

R语言入门和使用技巧
[,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 7 8 9 [4,] 10 11 12
> x = array(1:24,c(3,4,2)) ,,1
[,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12
type, main, sub, xlab,ylab, xlim, ylim, axes, asp, log, col, pch, cex, lty, lwd,
Par charts
Par charts
Col: 图中符号(点、线等)的颜色, col.axis 坐标轴刻度标记的颜色 b 坐标轴标题的颜色 col.main 图主标题的颜色 col.sub 图副标题的颜色
Cex: 图上元素(文本和符号等)的缩放倍数 ;取值为一个相对于1的数值 cex.axis 坐标轴刻度标记的缩放倍数 b 坐标轴标题的缩放倍数 cex.main 图主标题的缩放倍数 cex.sub 图副标题的缩放倍数
plot charts
plot(c(0,4.5),c(0,4),col="white",xlab="",ylab="",main="pch=",xaxt="n",yaxt="n",cex.main=2.5) for (i in 0:24) {points(i %% 5, i %/% 5, pch=i,cex=2)text(0.3+ i %% 5, i %/% 5, i, cex=2)}
❖ R语言的发展
1980年(贝尔实验室)
R完善(MathSoft 公司的统Robert Gentleman 和 Ross Ihaka )

R语言基本操作

R语言基本操作
成长与普及
随着R语言的不断完善和开源社区的壮大,它逐 渐成为数据科学、统计学、机器学习等领域广泛 使用的编程语言。
最新动态
R语言持续发展,不断推出新版本,并扩展到更 多应用领域。
R语言的特点和优势
统计计算
R语言专为统计分析而设计,具有强大 的统计计算能力,能够轻松处理各种复
杂的统计分析任务。
灵活性高
05
CATALOGUE
R语言进阶应用
模型拟合和预测
线性回归模型 使用lm()函数拟合线性回归模型 ,通过summary()函数获取模型 摘要,包括系数、截距、R方等 统计量。
决策树模型 使用rpart()函数拟合决策树模型 ,适用于解决分类问题,能够生 成易于理解的树状结构。
非线性回归模型 使用nls()函数拟合非线性回归模 型,适用于因变量和自变量之间 存在非线性关系的场景。
数据聚合和分组
数据聚合 使用`summarize()`函数对数据进行聚
合,如求和、平均值、计数等。
使用`dplyr`包中的`summarise()`函数 对数据进行聚合和转换。
数据分组
使用`aggregate()`函数按指定变量对 数据进行分组聚合。
使用`dplyr`包中的`group_by()`函数 按指定变量对数据进行分组,并结合 其他操作如聚合、排序等。
协方差分析
主成分分析
聚类分析
使用aov()函数进行方差分析,比较不 同组之间的均值是否存在显著差异。
使用prcomp()函数进行主成分分析, 将多个变量简化为少数几个综合指标 。
数据挖掘和机器学习
支持向量机
使用e1071包中的svm()函数实现支持向量机算 法,适用于分类和回归问题。

R语言入门操作(2)

R语言入门操作(2)

通过Lasso 来进⾏行行压缩估计和变量量选择2018年年9⽉月24⽇日⽥田甜参数估计与假设检验2019年年4⽉月28⽇日 ⽥田甜CONTENTS01 02 03Rstudio 参数估计假设检验01Rstudio•R,解释器器,IDE的关系R是⼀一种解释型语⾔言,不不需要编译的过程,代码的翻译和执⾏行行是同步的,R不不需要编译器器但需要解释器器图形界⾯面程序(GUI)除了了引⽤用了了解释器器到它主要窗⼝口中外,还实现了了编辑器器,图形展示和快捷按钮等功能,⼀一个GUI程序只需提供对R语⾔言常⽤用功能的图形化包装即可被称R的GUIGUI如果在⼀一个窗⼝口中包括了了解释器器、编辑器器和图形展示等功能则可被称为IDERstudio是⼀一个优秀的R IDE•选择⼀一个适合⾃自⼰己的IDE(Integrated Development Environment)•控制台•⼯工作空间和历史窗⼝口•画图和帮助窗⼝口2.1参数估计-点估计•矩估计因为不不同的分布有不不同的参数,所以在R 的基本包中并没有给出现成的函数,⼀一般要转化为⽅方程组求解:例例:设随机变量量X 服从[ , ]的均匀分布,现有n 个样本, ,估计两个参数解:⽤用样本⼀一阶矩(样本均值)估计总体均值,样本⼆二阶矩(样本⽅方差)估计总体⽅方差,即⽤用rootSolve 包中的函数multiroot()求解⽅方程组install.packages('rootSolve') # 安装rootSolve 程序包library(rootSolve) # 载⼊入包θ2x 1,...,x n θ1E (X )=θ1+θ22=¯x Var (X )=(θ2−θ1)212=1n n ∑i =1(x 1−¯x )2=S 2•输⼊入样本数据,计算样本⼀一阶矩和⼆二阶矩程序运⾏行行结果(采⽤用迭代的⽅方式,因此需要给出初始值)x = c(4, 5, 2, 9, 5, 1, 6, 4, 6, 2)mu = mean(x) # ⼀一阶矩var = sum((x - mean(x)) ^ 2) / 10 # ⼆二阶矩•构建⽅方程组model = function(theta, mu, var){c(F1 = theta[1] + theta[2] - 2 * mu,F2 = (theta[2] - theta[1]) ^ 2 / 12 - var)}•调⽤用函数进⾏行行求解(详细的参数说明可⽤用?multiroot命令来查看)multiroot(f=model,start=c(0,10),mu=mu,var=var)•法⼀一:写出似然函数,求偏导转换为⽅方程组,求解⽅方程组•例例:设X 服从正态分布 ,为来⾃自总体的⼀一组样本,⽤用极⼤大似然估计参数解:似然函数为:求偏导可得:N (μ,σ2)x 1,...,x n L (μ,σ2;x )=n ∏i =1f (x i ;μ,σ2)=(2πσ2)−n /2exp [−12σ2n∑i =1(x i −μ)2]∂lnL (μ,σ2;x )∂μ=−1σ2n ∑i =1(x i −μ)=0∂lnL (μ,σ2;x )∂σ2=−n 2σ2+12σ4n ∑i =1(x i −μ)2=0•输⼊入数据程序运⾏行行结果set.seed(1) # 设置随机种⼦子x = rnorm(10) # ⽣生成10个服从标准正态分布的随机数•构建⽅方程组model = function(e,x){n = length(x)c(F1 = sum(x - e[1]),F2 = - n + sum((x - e[1]) ^ 2) / e[2] ^ 2)}•调⽤用函数进⾏行行求解multiroot(f=model,start=c(0,1),x=x)•法⼆二:写出对数似然函数,调⽤用maxLik 包中的函数maxLik 。

R语言入门实例

R语言入门实例
• S-PLUS有微机版本和工作站版本,它是一个商 业软件。
• Auckland大学的Robert Gentleman 和 Ross Ihaka 及其他志愿人员开发了一个R系统,其语 法形式与S语言基本相同,但实现不同,两种语 言的程序有一定的兼容性。
• R是一个GPL自由软件,现在的版本是2.12.2版, 它比S-PLUS 还少些功能,但已经具有了很强的 实用性。
的 /mirrors.html 网 – UCLA提供的关于R与S-Plus的联接,具有搜索功 站能
/splus/default.htm
资 – 李东风主页提供了R的Windows版本 源 /teachers/lidf/index.html
• 本课程中尽量介绍S-PLUS和R都能使用的功能, 以R为主。下面我们用S统称S-PLUS和R。
• R_GUI
R的运行平台
– 启动R,我们看到R GUI (graphic user’s interface)的主窗口, 它由三部分组成
• 主菜单 工具条 R console (R的运行窗口)
– R console
• “Simple R” by John Verzani (PDF, data sets, various PDF, PS and a browsable HTML version are available at the Simple R homepage).
• “Practical Regression and Anova using R” by Julian Faraway (PDF, data sets and scripts are available at the book homepage).

• tseries – 时间序列分析

R语言基础


向量
向量的编辑
向量修改只需要通过索引找到特定元素,然后直接使用 <-进行赋值即可。 1、向量扩展 R语言可对对象长度进行任意扩展。例如a<c(1,2,3);a<-c(a,c(5:7)) a 结果为1 2 3 5 6 7 2、元素的删除 对向量重新赋值的方式删除向量内某一元素。例如: a<-c(1:4);a<-a[-3] a结果为1 2 4
向量
向量排序
1、向量正排序 sort()函数:根据数值大小进行正排序。例如a<c(11:20,c(1:9));sort(a) 2、向量倒排序 rev()函数:根据下标进行到排序。例如a<c(1,4,2,6,8);rev(a)
向量
向量去重 unique()函数:实现向量的去重。例如: a<-c(1,2,1,4,2,4,5,1);unique(a)结果1 2 45
search():浏览已加载包的名称,即以无形式参数的方式调用名为search的函数。若要 调用尚未加载的包中的函数,需按照“先加载,后浏览,在调用”的步骤实现。 (2)函数名(形式参数列表):这是一种带形式参数的函数调用,即括号中依顺序给 出了一个或多个形式参数,各形式参数之间以英文逗号隔开。例如:为了解各包中包含 哪些函数、各函数的功能以及如何调用函数,可书写:library(help=“包名称”),即以 带形式参数(help=“包名称”)的方式调用名为library的函数。library(help="base") 若要调用尚未下载的包中的函数,需首先将相关包下载并安装好。当R启动后并处于 联网环境下,步骤为:第一,指定镜像站点。第二,下载安装Install package()函数:通过列合并函数将多个已有向量合并成矩阵。 例如:x1<-c(1:5);x2<-c(6:10);cbind(x1,x2) rbind()函数:通过行合并函数将多个已有向量合并成矩阵。 例如:x1<-c(1:5);x2<-c(6:10);rbind(x1,x2) 2、删除矩阵。 删除矩阵内某行和某列的方式类似于向量,实质是对向量 重新赋值。例如: data<-c(1:10);a<matrix(data,ncol=2,nrow=5);a<-a[-1,] ,删除第一 行的元素。a[,-1]删除第一列的元素。

R语言——精选推荐

R语⾔R语⾔简介R语⾔笔记:数据分析与绘图的编程环境版本1.7R Development Core TeamJune10,2006Contents1绪论与基础11.1R语⾔环境 (1)1.2相关的软件和⽂档 (1)1.3R与统计 (2)1.4R与视窗系统 (2)1.5R的交互使⽤ (2)1.6⼊门训练 (3)1.7获取函数和功能的帮助信息 (3)1.8R的命令、对⼤⼩写的敏感,等等 (3)1.9对已输⼊命令的记忆和更改 (4)1.10命令⽂件的执⾏和输出的转向到⽂件 (4)1.11数据的保持与对象的清除 (4)2简单操作;数值与向量52.1向量与赋值 (5)2.2向量运算 (5)2.3产⽣规则的序列 (6)2.4逻辑向量 (7)2.5缺失值 (7)2.6字符向量 (7)2.7索引向量(index vector);数据集⼦集的选择与修改 (8) 2.8对象的其他类型 (9)3对象,模式和属性103.1固有属性:模式和长度 (10)3.2改变对象的长度 (11)3.3属性的获取和设置 (11)3.4对象的类别 (11)4有序因⼦与⽆序因⼦124.1⼀个特例 (12)4.2函数tapply()与ragged数组 (12)4.3有序因⼦ (13)5数组和矩阵145.1数组 (14)5.2数组的索引和数组的⼦块 (14)5.3索引数组 (15)iCONTENTS ii5.4函数array() (16)5.4.1向量,数组的混合运算,重复使⽤规则 (16) 5.5两个数组的外积 (17)5.6数组的⼴义转置 (17)5.7专门的矩阵功能 (18)5.7.1矩阵乘法 (18)5.7.2线性⽅程和矩阵的逆 (18)5.7.3特征值和特征向量 (19)5.8奇异值分解与⾏列式 (19)5.9最⼩⼆乘拟合及QR分解 (19)5.10构建分区矩阵,cbind()和rbind() (19)5.11连接函数c(),针对数组的应⽤ (19)5.12由因⼦⽣成频数表 (20)6列表和数据帧216.1列表 (21)6.2构建和修改列表 (22)6.2.1连接列表 (22)6.3数据帧 (22)6.3.1创建数据帧 (22)6.3.2attach()与detach() (23)6.3.3使⽤数据帧 (23)6.3.4挂接任意列表 (24)6.3.5管理搜索路径 (24)7从⽂件中读取数据257.1函数read.table() (25)7.2函数scan() (26)7.3内建数据集的存取 (26)7.3.1从其他R功能包中载⼊数据 (27)7.4编辑数据 (27)8概率分布288.1R—作为⼀个统计表的集合 (28)8.2检测数据集合的分布 (29)8.3单样本和两样本检验 (32)9语句组、循环和条件操作359.1表达式语句组 (35)9.2控制语句 (35)9.2.1条件执⾏:if语句 (35)9.2.2重复执⾏:for循环,repeat和while (35)10编写⾃⼰的函数3710.1简单⽰例 (37)10.2定义新的⼆元操作符 (38)10.3指定的参数和默认值 (38)10.4参数’...’.. (39)10.5函数内的赋值 (39)10.6更多⾼级⽰例 (39)CONTENTS iii10.6.1区组设计的效率因⼦(E?ciency factors) (39) 10.6.2删除打引数组中的所有名称 (40)10.6.3递归的数值积分 (41)10.7范畴(scope) (41)10.8定制环境 (43)10.9类别,通⽤函数和对象定位 (44)11R的统计模型4511.1定义统计模型;公式 (45)11.1.1对⽐(contrasts) (48)11.2线性模型 (48)11.3⽤于释放模型信息的通⽤函数 (48)11.4⽅差分析与模型⽐较 (49)11.4.1⽅差分析表(ANOVA tables) (49)11.5更新拟合模型 (50)11.6⼴义线性模型 (50)11.6.1族(families) (51)11.6.2函数glm() (51)11.7⾮线性最⼩⼆乘和最⼤似然模型 (53)11.7.1最⼩⼆乘 (53)11.7.2最⼤似然 (54)11.8⼀些⾮标准的模型 (55)12图形过程5612.1⾼级绘图命令 (56)12.1.1函数plot() (56)12.1.2显⽰多元数据 (57)12.1.3显⽰图形 (58)12.1.4⾼级绘图函数的参数 (58)12.2低级绘图命令 (59)12.2.1数学注释 (61)12.2.2Hershey⽮量字体 (61)12.3图形的交互 (61)12.4使⽤图形参数 (62)12.4.1持续性变更(Permanent changes):par()函数 (62)12.4.2临时性变更:图形函数的参数 (63)12.5图形参数列表 (63)12.5.1图形元素 (63)12.5.2坐标轴和标记 (64)12.5.3图边缘(Figure margins) (65)12.5.4多图环境 (65)12.6设备驱动 (67)12.6.1⽂本⽂档的PostScript图表 (67)12.6.2多重图形设备 (67)12.7动态图形 (68)Chapter1绪论与基础1.1R语⾔环境R是⼀套由数据操作、计算和图形展⽰功能整合⽽成的套件。

R语言入门及绘图实例


2.1 常用 R 程序包 (II)
Graphics lattice maptools mefa mgcv mvpart nlme ouch pgirmess phangorn
绘图 栅格图 空间对象的读取和处理 生态学和生物地理学多元数据处理 广义加性模型相关 多变量分解 线性及非线性混合效应模型 系统发育比较 生态学数据分析 系统发育分析
而 S 语言是由 AT&T 贝尔实验室开发的一种用来进行数 据探索、统计分析和作图的解释型语言。最初 S 语言的实现 版本主要是 S-PLUS 。
后来 Auckland 大学的 Robert Gentleman 和 Ross Ihak a 及其他志愿人员开发了一个 R 系统。
S-PLUS 的使用手册,只要稍加修改就可作为 R 的使用 手册。所以有人说: R ,是 S-PLUS 的一个“克隆”。
R 程序包是 R 功能扩展,特定的分析功能,需要用相应的程序包实现。 例如:系统发育分析,常用到 ape 程序包,群落生态学 vegan 包等。
2.1 常用 R 程序包 (I)
ade4 adephylo ape apTreeshape boot cluster ecodist FD geiger
利用欧几里得方法进行生态学数据分析 系统进化数据挖掘与比较方法 系统发育与进化分析 进化树分析 Bootstrap 检验 聚类分析 生态学数据相异性分析 功能多样性分析 物种形成速率与进化分析
3.1 R 的函数
R 是一种解释性语言,输入后可直接给出结果。 功能靠函数实现。 函数形式 :
函数 ( 输入数据,参数 = ) 如果没有指定,则参数的以默认值为准。 例如 : 平均值 mean(x, trim = 0, na.rm = FALSE, ...) 线性模型 lm(y~x, data=test)

R语言入门级实例

R语⾔⼊门级实例R语⾔⼊门级实例——⽤igragh包分析社群珍云恒星 2020-03-02 原⽂R语⾔⼊门级实例——⽤igragh包分析社群引⼊—— 本⽂的主要⽬的是初步实现R的igraph包的基础功能,包括绘制关系⽹络图(social relationship)、利⽤算法进⾏社群发现(community detecting)。

对于R语⾔零基础的同学⾮常友好。

以下R代码中如有含义不清的,建议尝试先在R编辑器中输⼊?xxx()进⾏查询(xxx是函数或语句名)。

此外,StackOverflow论坛也帮博主⼩⽩看懂了不少报错信息。

主要参考资料为《R语⾔与⽹站分析》[李明著][机械⼯业出版社][2014.04] 的9.3节《关系⽹络分析》。

0.背景 现已获得超市中商品的名称、分类以及⼤量顾客购物篮⼦中的商品信息,任务是分析哪些商品存在相关性,经常被放在⼀起购买。

题外话,这种分析的⼀例经典应⽤就是沃尔玛超市的“啤酒与尿布”,感兴趣者可⾃⾏搜索或参见Jocelyn_燕的⼀篇博客.1.原始数据及初步处理 数据来源是Kaggle竞赛的数据库instacart-market-basket-analysis.下载压缩⽂件之后,将有⽤的数据合并到⼀个Excel⽂件中,此处需要order_product,order,products,departments的数据.注意,这个⽂件极⼤,order_product_prior这个spread sheet⾥的数据在Excel⾥已经⽆法完全显⽰,博主就截取了前500条信息,形成了mini数据集,以下对数据集的操作都是针对这个mini表进⾏的.如下: 为了达到参考书上的数据形式,需要先整理这个Excel,形成如下图只有四列数据的形式.这⾥博主不太熟悉R的操作,就⽤Python的循环处理了,代码可附在⽂章最后. 这是当初处理数据集的⼀些⽂件,由于不会⽤R完成所有命令,显得很笨拙hhh.2.数据集导⼊ 导⼊的数据集包含四列,原商品编号过⼤,不便于处理,p_id、d_id分别是商品、商品分类的新编号,如下图:(这些也是⽤Python代劳的)3.建⽴关系⽹络与绘图步骤描述:引⽤igraph包,建⽴空关系⽹络并设置点数据→为点数据添加商品号以及商品分类属性→添加线数据→plot出来发现是⾮连通图(存在孤⽴的点的图),有两个未连通的点(点43,点44),只⽤⼿动对点的个数减2即可将点的个数修改后,重新跑前⾯的所有代码即可这部分代码如下:(完整代码见⽂末)1. #建⽴空关系⽹络并设置点数据2. library(igraph)3. gdata<-graph.empty(directed=F)4. #num<-ncol(cart)5. num<-ncol(cart)-2 #修改点的个数6. gdata<-add.vertices(gdata,num)7.8. #为点数据添加商品号以及商品分类属性9. category<-c();item<-c()10. for(i in colnames(cart))11. {12. if(i!=136&& i!=140)13. {14. category<-c(category,data$d_id[which(data$p_id==i)[1]] )15. item<-c(item,data$p_id[which(data$p_id==i)[1]] )16. }17. }18. V(gdata)$category<-category19. V(gdata)$item<-item20.21. #添加线数据22. #依次遍历每个订单,读取每个订单内的商品ID,并存放于向量item.i23. for(i in 1:nrow(cart))24. { item.i<-c()25. for(j in 1:ncol(cart))26. {27. if(cart[i,j]==1)28. {29. item.i<-cbind(item.i,colnames(cart)[j])30. }31. }32. #建⽴向量内不同商品间的关联联系33. item.i.num<-length(item.i)34. from<-c();to<-c()35. for(m in 1:(item.i.num-1))36. {37. from<-c(from,item.i[-c((item.i.num-m+1):item.i.num)])38. to<-c(to,item.i[-c(1:m)])39. }40. if(i>1)41. {42. edges<-rbind(edges,matrix(c(from,to),nc=2))43. }44. else45. {46. edges<-matrix(data=c(from,to),nc=2)47. }48. }49. edges0<-edges50. labels<-union(unique(edges[,1]), unique(edges[,2]))51. ids<-1: length(labels)#对点的编号重新编码,因为在igraph中边信息的ids必须连续52. names(ids)<-labels53. newfrom<-as.character(edges[,1]);newto<-as.character(edges[,2])54. edges<-matrix (c(ids[newfrom],ids[newto]), nc=2)55.56. #添加线信息并设置线权重57. gdata<-add.edges(gdata,t(edges[-1,]))#t()是矩阵转置函数58. E(gdata)$weight<-count.multiple(gdata)59. gdata<-simplify(gdata, remove.multiple=TRUE, remove.loops = TRUE, b = 'mean')60. #最后⼀个参数⼀定是b,不是b61. dev.off()#关闭图形设备62. plot(gdata,edge.width=E(gdata)$weight,main="gdata", bel=E(gdata)$weight)63.64. #发现是⾮连通图,有两个未连通的点(点43,点44),只⽤⼿动对点的个数减2即可65. #将点的个数修改后,重新跑前⾯的所有代码 画出来的效果如下:4.社群发现与绘图 此处采⽤⾃旋玻璃法(spinglass community detecting)进⾏社群发现。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档