R基础学习

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包的文件夹

 

此导入程序包的方法:

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

例如:

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:12
dim(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$id
x[c(1,3)]

#假设list1 list2是两个list。可以用c()合并list
list <- 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("D:/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.5
height<-c(1.75, 1.80, 1.65, 1.90, 1.74, 1.91)
weight<-c(60, 72, 57, 90, 95, 72)
sq.height<-height^2
ratio<-weight/sq.height
t.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() #数据的转换,如取log
subset() #取数据的子集
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 <- 1
while(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.org
R资源列表 NCEAS http://www.nceas.ucsb.edu/scicomp/software/r
R 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

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值