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. 【代码笔记】iOS-屏幕根据键盘自动的变化高度

    一,效果图. 二,代码. ViewController.h #import <UIKit/UIKit.h> @interface ViewController : UIViewContro ...

  2. Sap R/3 Architecture Tutorial

    What is SAP R/3? SAP R/3 is a 3 tier architecture consisting of 3 layers Presentation Application Da ...

  3. angularjs -- 页面模板清除

    前几天项目在上线过程中,出现了一些新问题.页面在切换时由于前一个页面的模板清理不及时,会造成页面的重叠.导致这个问题的原因是:页面模板缓存,即上一个页面退出时,浏览器没有及时清空上一个页面的模板,导致 ...

  4. [Ubuntu] 解决 ubuntu 升级时 /boot 空间不足

    经常升级Linux内核,导致更新时警告/boot分区空间不足.这是以为多次升级内核后,导致内核版本太多,清理一下没用的内核文件就行了. 原文地址请保留http://www.cnblogs.com/ro ...

  5. Supervisor 管理进程,Cloud Insight 监控进程,完美!

    Supervisor 是由 Python 语言编写.基于 linux 操作系统的一款服务器管理工具,用于监控服务器的运行,发现问题能立即自动预警及自动重启等. Cloud Insight 是一款次世代 ...

  6. 3hibernate核心对象关系映射 xxx.hbm.xml

    Hibernate的核心就是对象关系映射: 加载映射文件的两种方式: 第一种:<mapping resource="com/bie/lesson02/crud/po/employee. ...

  7. Python3 sqlacodegen 根据已有数据库生成 ORM 使用的 model.py

    pip install sqlacodegen pip install pymysql sqlacodegen mysql+pymysql://username:password@127.0.0.1: ...

  8. 将 Windows VM 移到其他 Azure 订阅或资源组

    本文逐步说明如何在资源组或订阅之间移动 Windows VM. 如果最初在个人订阅中创建了 VM,现在想要将其移到公司的订阅以继续工作,则在订阅之间移动 VM 可能很方便. Important 不可在 ...

  9. 自动代码质量分析(GitLab+JenKins+SonarQube)

    自动代码质量分析(GitLab+JenKins+SonarQube) 1.需求场景 开发提交代码自动执行代码质量分析. 2.所需应用 GitLab,JenKins,SonarQube 3.架构图 4. ...

  10. Software Development Engineer, RDS Database Engines, Seattle

    DESCRIPTION About UsAmazon Aurora is an exciting new area of innovation for AWS, and the PostgreSQL- ...