R语言简介与下载安装

发布于:2025-04-18 ⋅ 阅读:(25) ⋅ 点赞:(0)

 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)

手动下载:

使用代码加载

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')

  • 未知函数未知包 RSiteSearch

RSiteSearch('Hosmer-Lemeshow') # 拟合度检验

4.R语言中的数据结构

向量的创建
  • 手工输入法——C

目标抽取法

#手工输入法

w<-c(a,b,c,d)     # 数值

c("李四","张三")√  #字符

c("李四""张三")× ## 需要用英文逗号

  • 序列生成法——:或seq

#seq方法

w<-seq(from,to,by)    # by 步长

w2<-seq(from,to,length)    #length 序列长度

 x<-seq(from=-5,to=5,length=1000)

  • 重复生成法——rep

#重复生成法

rep(x,times)  #times 指定x的循环次数

rep(x,each)  #each 指定x其中的循环次数

向量的获取
  • 位置索引法——中括号内写上目标元素的下标

#索引

x<-c(1,4,6,9)

x[3]

#实例:取出大于5的元素

index<-which(x>5)

x[index]

  • bool索引法——方括号内为布尔值

x>5

x[x>5]

向量的数据类型转换

函数

含义

is.integer

判断向量的元素是否为整数型

is.numeric

判断向量的元素是否为实数型

is.character

判断向量的元素是否为字符型

is.Date

判断向量的元素是否为日期型

as.integer

将向量元素强制转换为整数型

as.numeric

将向量元素强制转换为实数型

as.character

将向量元素强制转换为字符型

as.Date

将向量元素强制转换为日期型

#实例 日期转换

%m 数字月份 01-12

%d 数字日期 01-31

%y 数字年份后两位 01-99#  1969-2068

Sys.times() #返回当前时间

Sys.Date() # 返回当前日期

特殊值

特殊值的表示

含义

判断

NA

缺失值

is.na

NULL

空值

is.null

NaN

不确定值

is.nan

Inf

无限值

is.inf

向量的因子化转换

factor(x=character(),levels,labels=levels,exclude=NA,ordered=is.ordered(x))

常用数学函数

四则运算

符号

意义

+

-

*

/

^

乘方

%/%

取商

%%

取余

函数

意义

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!/[k!(n-k)!]

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')))

  • as.matrix(x,rownames.force=NA)

x:指定一个数据框,并将其强制转换为矩阵;

rownames.force:bool类型的参数,将x强制转换为矩阵后,矩阵是否包含字符型的列名称,默认为NA,表示矩阵列名称与数据框变量名称一致;

矩阵的索引

位置索引

mat4<-matrix(1:24,ncol=4)

mat4

mat4[3,]

mat4[,2]

mat4[3,2]

mat4[2:5,2:3]

#取出奇数行偶数列的数据

mat4[seq(1,nrow(mat4),by=2),seq(2,ncol(mat4),by=2)]

基于矩阵运算的常用函数
  • t() #矩阵的转置
  • ginv()  #矩阵的逆
  • solve(a,b)  #求解方程ax=b,默认b为单位向量
  •  t(A) %*% B  #矩阵内积     crossprod(A, B)#矩阵内积

  • 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

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);

# 数据预览

View(stu_info)   # V 大写

常用函数

函数

含义

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

View(list_object)

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 函数升级。


网站公告

今日签到

点亮在社区的每一天
去签到