R语言 1997年成为GNU项目 开源免费

R官方网址 www.r-project.org

R是数据分析领域的语言
小巧灵活,通过扩展包来增强功能
绘图功能
代码简单

开发环境
R + RStudio

1、数据类型
character 字符
numeric 数值型,实数或小数
integer 整型
complex 复数型
logical 逻辑型 类似于boollean

2、数据结构
Vector 向量
Factor 因子
Array 数组
Matrix 矩阵
Data Frame 数据框
List 列表


一维:向量、因子 向量属于数值型变量,因子对应于分类变量
二维:矩阵、数据框 矩阵中元素的数据类型是一致的,数据框由向量组成,每个向量中的数据类型保持一致,向量间的数据类型可以不一致,类似于表结构。
三维:数组、列表 数组用的比较少,多维数据结构;列表可以包含上面所有的数据结构

3、向量
向量表示一组数据,数据类型一致,向量可以表示行或者列
c() 如:
: 如: 1:10
seq(from(开始), to(到), by(步长), length.out(指定向量的元素个数), along.with(长度与指定的向量长度相同))

提取子集:
数字下标(正数:获取指定元素,从1开始,负数:排除的意思)
which()函数(按条件来进行筛选)

#向量
(x1<- c(,,,))
(x2<- :)
x3<- seq(,,) #from 1 to 5 by 1
x4<- seq(,by=,length.out=) #向量中元素个数为8
x5<- seq(,by=, along.with = x4) # along.with向量个数与x4一致
x5[:]
x5[c(,,,,)]
x5[-:-] #不要下标为1-5的元素 which(x5>) #大于5的向量下标
x5[which(x5>)] #大于5的向量值

4、因子
因子用于分类变量,有类别
factor()
gl()

#因子
f<-c('a','a','b','o','ab','ab')
f<-factor(c('a','a','b','o','ab','ab')) #创建因子,level默认按字母排序 unclass(f) #查看因子 f<-factor(c('a','a','b','o','ab','ab'),levels = c('a','b','o','ab')) #指定因子对应的level unclass(f) # f1<- gl(,,labels = c('blue','red','green','yellow')) #4个级别,每个级别重复3次,labels的内容
f1 unclass(f1)

5、矩阵
行和列

生成矩阵
matrix()
由向量派生
由向量组合生成

操作
访问元素
行列命名

矩阵运算
矩阵加法
1.矩阵+n 各个元素加n
2.矩阵+矩阵 对应元素相加

矩阵乘法
1.矩阵*n 各个元素乘n
2.矩阵*矩阵 行列相乘(矩阵1 m行*n列 矩阵2 p*q 要求n==p 结果矩阵为 m*q)
3.矩阵元素*矩阵元素 对应元素相乘

单位矩阵
元素都为1 n*n方阵

对角矩阵
对角元素为1 其余的为0 n*n方阵

矩阵转置
n*m m*n

#矩阵

#创建矩阵:
#方法一:使用matric(nrow=?,ncol=?)
x<-matrix(nrow=,ncol=) #nrow 指定行, ncol指定列
x
x<-matrix(:,nrow = ,ncol = ) # 3行,6列,元素值由1:18填充,默认一列一列顺序填充
x
x<-matrix(:,nrow = , ncol = , byrow = T) # 3行,6列,元素值由1:18填充,指定行顺序填充
x #方法二: dim(a) 通过dim 传递向量
a<-:
dim(a)<-c(,) #3行6列,行顺序填充
x #方法三: rbind或cbind进行拼接
x<-:
y<-:
z<-: m1 = rbind(x,y,z) #以行为单位进行拼接
m2 = cbind(x,y,z) #以列为单位进行拼接
m1
m2 #获取矩阵元素
x<-matrix(:,nrow = ,ncol = ,byrow = T)
x x[,] #第1行第2列
x[,] #第1行
x[,] #第2列
x[,c(,,)] #第2 3 4列
x[c(,),] #第1 2行
x[c(,),:] #第1 2行 第2 3 4列 #行列命名
colnames(x)<-c('C1','C2','C3','C4','C5','C6') #列的名字
rownames(x)<-c('R1','R2','R3') #行的名字 x['R1','C1']
x[c('R1','R2'),c('C1','C2')] #矩阵运算 m1<-matrix(:,nrow = ,ncol = , byrow = T)
m2<-matrix(:,nrow = , ncol = , byrow = T)
m1
m2 #矩阵加法
m1+ #矩阵+n
m1+m2 #矩阵+矩阵 #矩阵乘法
m1* #矩阵*n
m1*m2 #矩阵对应元素相乘
m1 %*% t(m2) #矩阵*矩阵 矩阵乘法 行列相乘 #对角矩阵
diag() #4*4矩阵 对角元素都为1
diag(c(,,,)) #4*4矩阵,对角元素为1,2,3,6 x<-matrix(:,,)
diag(x) #显示矩阵x的对角元素值 #解方程组
m<-diag()
m
b<-:
solve(m,b) #m %*% x=b 求x

6、数据框
记录与域

#数据框

#创建数据框
a<-data.frame(fx = rnorm(,,),
fy = runif(,,),
fmonth = : ) a[,]
a[,]
a[,] a$fx #通过$fx取列信息
a[[]]#通过[[]]获取列信息 search() #查询 attach(a) #attach 数据到 search路径
fx #直接使用
detach(a) #detach 数据 search() #查询 a<-with(a, fx) #访问数据框成员 #新增修改列
a<-within(a,{fx=: #通过within来进行修改,和新增列
fz=:}) #新增列
a$fz = :
a$fz = a$fx+a$fy #列存在则修改
a$fx = : #查询数据集
b = subset(a,fx>&fmonth==,select=c(fx,fmonth)) #select 列过滤,fx>1&fmonth==8 行过滤 b=edit(a) #修改后的数据集赋值给另一个数据集
b
fix(a) #直接修改数据集内容
a

7、列表
成分

创建列表
list()

操作
列表成分
[[]]
$

#列表

#创建列表
a<-list(x=:,y=matrix(:,,),z=data.frame()) names(a) <- c('c1','c2','c3') #修改成分名称 c
c=a['y'] #在列表中通过[]取出的对象类型还是列表
c[,]
class(c) #查看类型为list c=a[['y']] #在列表中通过[[]]取出的对象类型为实际对象类型矩阵
c[,]
class(c) #查看类型为matrix a$y[,] #获取矩阵的元素

8、数组
array

#数组
(a=array(:,c(,,))) #数组三维
a[,,]

9、数据类型转换

检查数据类型 is.开头
is.character
转换数据类型 as.开头
as.character

x=c(:,'hello',T)
x
mode(x) #查看数据类型
class(x) #查看数据结构 is.vector(x) y<-matrix(:,c(,))
mode(y) #数据类型是numeric
class(y) #数据结构是matrix y<-as.data.frame(y) #数据类型转换matrix->dataframe
y

10、分之结构
if...else...结构
if(condition){...}
else{...}

ifelse函数

#分支结构
(Brand<-paste(c('Brand'),:,sep='')) #粘合一起
#"Brand1" "Brand2" "Brand3" "Brand4" "Brand5" "Brand6" "Brand7" "Brand8" "Brand9"
(PName<-paste(c('Dell'),:,sep=' '))
(Mem<-rep(c('1G','2G','4G'),times=)) #重复
#"1G" "2G" "4G" "1G" "2G" "4G" "1G" "2G" "4G"
(Feq=rep(c('2.2G','2.8G','3.3G'),each=))
(Price=rep(c(,,),))
PC=data.frame(Brand,PName,Mem,Feq,Price)
##分支结构
#if..else
PC
PC$PD=rep('Cheap',) for (i in :nrow(PC)){ #1:nrow(PC)从第1行到最后一行
if (PC[i,'Price']>){ #取值进行比较
PC[i,'PD']='Expensive' #修改值
}
} PC #ifelse函数
PC$PD2=ifelse(PC$Price>,'Expensive','Cheap') #向量化运算 PC c

11、循环结构
for(n in x){...}

while(condition){...}

repeat{...break}

break next

#循环结构
for (x in :){
print (x^)
} i=
while (i<){
print (i^)
i=i+
} i=
repeat {
print (i^)
i=i+
if (i>) break
}

12、函数
自定义函数

myfunc =function(par1,par2,...){
...
}

引用函数文件
source('D:/basic.R', encoding = 'UTF-8')

查看源码
myfunc #终端显示
page(myfunc) #用第三方编辑器查看

#函数
myadd=function(a,b,c){
return (a+b+c)
} mystat=function(x,na.omit=FALSE){
if (na.omit){
x=x[!is.na(x)]
}
m=mean(x)
n=length(x)
s=sd(x)
skew=sum((x-m)^/s^)/n
return (list(n=n,mean=m,stdev=s,skew=skew))
}

13、向量化运算和apply家族

#向量化
x=: (y=x^) (y=matrix(:,,))
(z=y^) (x=:)
(y=:)
(x+y) y>= ifelse(x%%==,'A','B') x=data.frame(pv=rnorm(,,),
uv=rnorm(,,),
ip=runif(,,))

apply(x,MARGIN = ,mean) #在列的方向上进行mean运算
apply(x,MARGIN = ,quantile,probs=c(0.1,0.5,0.9)) #在列的方向上进行quantile运行

R 语言-基础的更多相关文章

  1. R语言基础:数组&列表&向量&矩阵&因子&数据框

    R语言基础:数组和列表 数组(array) 一维数据是向量,二维数据是矩阵,数组是向量和矩阵的直接推广,是由三维或三维以上的数据构成的. 数组函数是array(),语法是:array(dadta, d ...

  2. R语言基础画图/绘图/作图

    R语言基础画图/绘图/作图 R语言基础画图 R语言免费且开源,其强大和自由的画图功能,深受广大学生和可视化工作人员喜爱,这篇文章对如何使用R语言作基本的图形,如直方图,点图,饼状图以及箱线图进行简单介 ...

  3. 【计理05组01号】R 语言基础入门

    R 语言基本数据结构 首先让我们先进入 R 环境下: sudo R 赋值 R 中可以用 = 或者 <- 来进行赋值 ,<- 的快捷键是 alt + - . > a <- c(2 ...

  4. 从零开始系列-R语言基础学习笔记之二 数据结构(二)

    在上一篇中我们一起学习了R语言的数据结构第一部分:向量.数组和矩阵,这次我们开始学习R语言的数据结构第二部分:数据框.因子和列表. 一.数据框 类似于二维数组,但不同的列可以有不同的数据类型(每一列内 ...

  5. 从零开始系列--R语言基础学习笔记之一 环境搭建

    R是免费开源的软件,具有强大的数据处理和绘图等功能.下面是R开发环境的搭建过程. 一.点击网址 https://www.r-project.org/ ,进入"The R Project fo ...

  6. R语言基础语法

    学习一门新的语言,率先学习输出hello world.我们就从这里开始学习. 首先打开RStudio这个IDE,然后在左边输入: > mystr <- "hello world& ...

  7. R语言基础2

    ----------------------------------R语言学习与科研应用,科研作图,数据统计挖掘分析,群:719954246-------------------------- 通常, ...

  8. R语言基础1

    ----------------------------------R语言学习与科研应用,科研作图,数据统计挖掘分析,群:719954246-------------------------- 我们将 ...

  9. R语言基础入门之二:数据导入和描述统计

    by 写长城的诗 • October 30, 2011 • Comments Off This post was kindly contributed by 数据科学与R语言 - go there t ...

随机推荐

  1. 将caj文件转化为pdf文件进行全文下载脚本(ubuntu下亲测有用)

    最近ubuntu下caj阅读器,突然崩掉了,而偏偏要准备开题,在网上搜索原因未果,准备放弃时候,突然在网上看到一个脚本,说是很好用,可以在指定页面将caj文件转化为pdf文件,亲测有用,这里直接给出脚 ...

  2. ebook

    libgen.io onlybooks.org www.ebook3000.com www.foxebook.net

  3. FAST特征点检测算法

    一 原始方法 简介 在局部特征点检测快速发展的时候,人们对于特征的认识也越来越深入,近几年来许多学者提出了许许多多的特征检测算法及其改进算法,在众多的特征提取算法中,不乏涌现出佼佼者. 从最早期的Mo ...

  4. 一次失败的生产系统中AlwaysOn AG切换经历

    14:25分左右,某数据库主副本服务器崩溃报错,在数据库无法接收SQL语句进行调整的情况下重启了主副本服务器. 由于服务器重启时间会比较长,为了保证主副本服务器重启期间数据库能正常进行写入,强制将主库 ...

  5. mysql processlist 线程状态

        Analyzing 线程是对MyISAM 表的统计信息做分析(例如, ANALYZE TABLE ).   checking permissions 线程是检查服务器是否具有所需的权限来执行该 ...

  6. Centos kernel panic-not syncing:VFS:Unable to mount root fs on unknown block 解决办法

    昨晚更新了一下内核,今晚开机就无法进系统了...提示如下图: 解决方案:开机启动时按Esc,然后选择下面的旧版本的内核启动即可. (成功进入系统后,你可以选择改变开机默认选择的内核). uname - ...

  7. scss 使用

    SCSS 常用功能 https://www.cnblogs.com/guangzan/p/10547335.html 定义变量$my-color: #666; //定义变量$my-heihgt: 10 ...

  8. Sublime Test 3 搭建C++11编译环境(Windows)

    0. 我的环境: Windows 8.1,Sublime Test 3 - Build 3126,CodeBlocks 16.01. 1. 下载Sublime Test 3,以及安装Package和各 ...

  9. Springboot整合log4j2日志全解

    目录 常用日志框架 日志门面slf4j 为什么选用log4j2 整合步骤 引入Jar包 配置文件 配置文件模版 配置参数简介 Log4j2配置详解 简单使用 使用lombok工具简化创建Logger类 ...

  10. HTML5新特性postMessage解决跨域

    window.postMessage的功能是允许程序员跨域在两个窗口/frames间发送数据信息.基本上,它就像是跨域的AJAX,但不是浏览器跟服务器之间交互,而是在两个客户端之间通信.让我们来看一下 ...