莫张周刘王 发表于 7 天前

R语言简介与下载安装

 1.R语言简介与下载安装



[*]R语言其诞生于新西兰奥克兰大学,由Ross Ihaka 和Robert Gentleman开发,属于商业软件S语言的替代品;
[*]R语言是一款开源的编程类工具,专门用于数据清洗、整理、统计分析、可视化以及数据挖掘等方面,而且不受体系平台的限制。
在https://www.r-project.org/ 网站中可以下载到R语言,最好选择清华的镜像。
为了能够更好的写代码,可以下载RStudio软件,即R语言的GUI(Graphical User Interface)。 https://www.rstudio.com/
2.第三方包的下载与加载

使用代码下载:
install.packages(package_name)
手动下载:
https://i-blog.csdnimg.cn/direct/f2e1ee7187f9495da2d995455895d743.png
使用代码加载
library(package_name)
require(package_name)
library 和require 都是加载包,区别在于,输出的错误信息不一致。
3.怎样查看资助文档



[*]知包知函数 help
help(lda,package='MASS')


[*]知函数未知包 help.search
help.search('dbscan')


[*]知包未知函数 apropos
library(lmtest)
library(car)
apropos('test')
https://i-blog.csdnimg.cn/direct/93256336e1a144849e85c47321d1f108.png


[*]未知函数未知包 RSiteSearch
RSiteSearch('Hosmer-Lemeshow') # 拟合度检验
https://i-blog.csdnimg.cn/direct/5d4fea9db6db4914aa4558a86e7e1eb5.png
4.R语言中的数据布局
向量的创建



[*]手工输入法——C
目标抽取法
#手工输入法
w<-c(a,b,c,d)     # 数值

c("李四","张三")√  #字符
c("李四","张三")× ## 需要用英文逗号
https://i-blog.csdnimg.cn/direct/70ed165d68b24e8493e671dc559445b9.png


[*]序列天生法——:或seq
#seq方法
w<-seq(from,to,by)    # by 步长
w2<-seq(from,to,length)    #length 序列长度
 x<-seq(from=-5,to=5,length=1000)
https://i-blog.csdnimg.cn/direct/526e685e51974811a197970c173e0b05.png
https://i-blog.csdnimg.cn/direct/e9b7cb744efe431d96bb869b166f56d3.png


[*]重复天生法——rep
#重复天生法
rep(x,times)  #times 指定x的循环次数
rep(x,each)  #each 指定x其中的循环次数
https://i-blog.csdnimg.cn/direct/b465ba7e6f4c443e94d45d26c60ac01e.png
向量的获取



[*]位置索引法——中括号内写上目标元素的下标
#索引
x<-c(1,4,6,9)
x
https://i-blog.csdnimg.cn/direct/e5c428e680e54cce8b54905dc080f94f.png
#实例:取出大于5的元素
index<-which(x>5)
x
https://i-blog.csdnimg.cn/direct/e8aa599c25db4e7eac2f3ca5f3f58df2.png


[*]bool索引法——方括号内为布尔值
x>5
x
https://i-blog.csdnimg.cn/direct/c96f3ce47d9746e3ac56cbbf9bcfc001.png
向量的数据类型转换

函数
含义
is.integer
判断向量的元素是否为整数型
is.numeric
判断向量的元素是否为实数型
is.character
判断向量的元素是否为字符型
is.Date
判断向量的元素是否为日期型
as.integer
将向量元素强制转换为整数型
as.numeric
将向量元素强制转换为实数型
as.character
将向量元素强制转换为字符型
as.Date
将向量元素强制转换为日期型
#实例 日期转换
https://i-blog.csdnimg.cn/direct/df2bfccfc2bf4204bdfee827b0380d89.png
%m 数字月份 01-12
%d 数字日期 01-31
%y 数字年份后两位 01-99#  1969-2068
Sys.times() #返回当前时间
Sys.Date() # 返回当前日期
https://i-blog.csdnimg.cn/direct/69d1893f25a74387b9eef243d69a8aeb.png
特殊值

特殊值的表现
含义
判断
NA
缺失值
is.na
NULL
空值
is.null
NaN
不确定值
is.nan
Inf
无穷值
is.inf
向量的因子化转换

factor(x=character(),levels,labels=levels,exclude=NA,ordered=is.ordered(x))
https://i-blog.csdnimg.cn/direct/01f39603e0f142bd91cffee99b94bbdd.png
常用数学函数

四则运算
符号
意义
+

-

*

/

^
乘方
%/%
取商
%%
取余
函数
意义
abs(x)
绝对值或者模
sqrt(x)
开方
exp(x)
指数
log(x) , log10(x) , log(x,n)
对数
sin(x),cos(x),tan(x)
三角函数(正弦、余弦、正切)
asin(x), acos(x),atan(x)
反三角函数
sinh(x),cosh(x),tanh(x)
双曲函数
asinh(x),acosh(x),atanh(x)
反双曲函数
facrorial(x)
阶乘x!
choose(n,k)
二项系数(n,k) n!/
gamma(x)
Gamma 函数
floor(x)
向下取整,<x 最大整数
ceiling(x)
向上取整,>x 最小整数
trunc(x)
靠近0取整,trunc(1.5)=1,trunc(-1.5)=-1,
round(x)
四舍五入
5.矩阵

矩阵的构造

通常意义上,矩阵紧张是指二维矩阵,由列和行两个维度构成。


[*]matrix(data=NA,nrow=1,ncol=1,byrow=FALSE,dimnames=NULL)
#data 指定一个用于构造矩阵的一维向量;
nrow ncol分别指定行列数;
byrow:bool类型的参数,指在矩阵构造过程中,元素是否按照行风格添补,默认为FALSE;
dimnames设置行列名称

matrix(c(1,2,3,4),2,2)
matrix(c(1,2,3,4),2,2,byrow = TRUE,dimnames=list(c('A','B'),c('first','second')))
https://i-blog.csdnimg.cn/direct/4d3cc47a982246a4a6d83ec9bcfc39ba.png


[*]as.matrix(x,rownames.force=NA)
x:指定一个数据框,并将其强制转换为矩阵;
rownames.force:bool类型的参数,将x强制转换为矩阵后,矩阵是否包罗字符型的列名称,默认为NA,表现矩阵列名称与数据框变量名称一致;
矩阵的索引

位置索引
mat4<-matrix(1:24,ncol=4)
mat4
mat4
mat4[,2]
mat4
mat4
#取出奇数行偶数列的数据
mat4
基于矩阵运算的常用函数



[*]t() #矩阵的转置
[*]ginv()  #矩阵的逆
[*]solve(a,b)  #求解方程ax=b,默认b为单位向量
[*] t(A) %*% B  #矩阵内积     crossprod(A, B)#矩阵内积
https://i-blog.csdnimg.cn/direct/7020ea6a2c9b45d2ad448d4dac84463b.png
https://i-blog.csdnimg.cn/direct/642ef601b65e425c82e1175f327f8926.png


[*]x %o% y #矩阵外积
outer(x, y)#矩阵外积 得到数组
x <- matrix(c(1,2,3,4,5,6),2,3);
y <- matrix(c(1,2,3,1,2,3),2,3);
z <- outer(x,y);
class(z);
z
https://i-blog.csdnimg.cn/direct/7d0a643bc0cb4e8396a07495bc80844c.png
https://i-blog.csdnimg.cn/direct/fbc60d68c3ed4bada87bcd994072ba1d.png
6.数据框

构造数据框

不管是向量照旧矩阵,它们的元素都是同质的。
数据框的构造有两种途径,一种是使用data.frame函数手动创建或者使用as.data.frame天生。


[*]data.frame(..., row.names = NULL, check.rows = FALSE,
           check.names = TRUE, fix.empty.names = TRUE,
           stringsAsFactors = default.stringsAsFactors())
...:指定多个长度相称的向量,用于构造数据框;
row.names:指定数据框的行名称,默认为1到n的整数;
check.rows:bool类型的参数,是否查抄行名称row.names与数据框的行数一致,默认为FALSE;
check.names:bool类型的参数,是否查抄数据框列名称的公道性和重复性,默认为TRUE;
fix.empty.names:bool类型的参数,如果数据框没有列名称,是否将其修正为V1、V2……,默认为TRUE;
stringsAsFactors:bool类型的参数,是否将字符串向量强制转换为因子型向量,默认为TRUE;

as.data.frame(x, row.names = NULL)
x:指定待转换为数据框的对象,可以是列表,也可以是矩阵;



[*]# 手工构造门生信息的向量
id <- 1:11;
name <- c('白月初','王富贵','涂山苏苏','梵云飞','涂山雅雅','涂山容容','王权富贵','东方淮竹','月初','王权霸业','厉雪扬');
birthday <- c('1989/7/16','1990/3/12','1992/8/15','1991/9/19',
           '1993/4/17','1987/6/13','1994/4/21','1990/3/7',
           '1990/12/3','1989/8/18','1993/7/19');
gender <- c('男','男','女','男','女','女','男','男','男','男','女');
height <- c(167,172,168,169,173,175,180,169,178,189,167);
weight <- c(65.3,70.2,55.8,70.4,68.9,67.4,74.7,70.5,77.8,85.6,53.8);

# 将向量组合为数据框
stu_info <- data.frame(id,name,birthday,gender,height,weight);
https://i-blog.csdnimg.cn/direct/a09da09afdbb46888e389ba48eba7bee.png
# 数据预览
View(stu_info)   # V 大写
https://i-blog.csdnimg.cn/direct/c902b396956e413dbe5900b18719e48a.png
常用函数

函数
含义
str
查看数据框的布局。包括行数、列数及变量的数据类型
summary
查看数据的统计信息
names
返回数据框的变量名
dim
返回数据框的行列数
nrow/ncol
仅返回数据框的行数/列数
class
返回某个对象所属的数据布局、数据类型
head/tail
预览数据的前/后N行
$
从数据框中提取某个元素
[ ]
索引
subset
提取子集
transform
基于数据框衍生新变量
rbind/cbind
多个矩阵或数据框之间的行归并与列归并
#从门生信息表中筛选出身高不低于170的男生
subset(x=stu_info,subset=gender=='男'&height>=170)
7.列表

列表雷同于一个大熔炉,可以存储任意一种数据对象,列表的索引有3种形式,分别是单中括号、双中括号以及美元符号。
# 创建组成列表元素的对象
constant <- 27
vector <- c('本科','本科','硕士','本科','博士')
mat <- matrix(data = 1:9, ncol = 3)
df <- data.frame(id = 1:5, age = c(23,25,28,25,26),
                 gender = c('男','男','女','女','女'),
                 income = c(12500,8500,13000,15000,9000))
# 构造列表
list_object <- list(A = constant, vector, C = mat, D = df)
# 返回列表
list_object
https://i-blog.csdnimg.cn/direct/b1b2f3862fe94bb5996e3a53287f0356.png
View(list_object)
https://i-blog.csdnimg.cn/direct/17cb83a7f6514ff69a4d9b2e3c3b4a9a.png
8.控制流语句及自定义函数
控制流语句

if(条件)
{执行A}
  else
{执行B}
For(i in )
{执行}
while(条件)
{执行}
自定义函数

func_name<-function(parameters)
{ func_expression
    return(result)
}
# 心形函数
func_heart <- function(r,theta)
{a <- 2*r*(sin(theta)-0.5*sin(2*theta))
  b <- 2*r*(cos(theta)-0.5*cos(2*theta))
  out <- list(a,b)
  return(out)
}
9.lapply族函数
tapply函数的使用:用于向量的分组统计。
tapply(x,INDEX,FUN=NULL,...,simplify=TRUE)
res2=tapply(X=iris$Sepal.Width,INDEX=iris$Species,FUN=summary)
res2
 apply函数用于矩阵轴的统计。
apply(X,MARGIN,FUN,...)
#MARGIN如果为1,就表现对矩阵的每一行进行统计盘算,如果为2,就表现对每一列做统计运算。
lapply和Sapply函数
Lapply 函数用于对向量或者列表元素的盘算,Sapply函数
是Lapply 函数升级。





免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: R语言简介与下载安装