这是一个java小码农的跨界试探,如果你对R感兴趣可以买本R语言入门与实践,因为这里只记录了本人觉得有用的基本知识点.如果你只是看个乐呵,祝你有所收获.
序
数据分析具备三个属性
- 可再现性
- 自动化
- 沟通
R的传统强项是建模与作图
1. R基础
1.1 R用户界面
冒号运算符:
表示返回两个整数值之间的所有整数.
1:100
R是一种动态编程语言,意味着运行R代码时,变异操作会由R自动完成.
#
是注释符号
1.2 对象
赋值<-
对象名不能以数字开头,特殊符号不能出现在名称中^ ! $ @ + - / *
R区分大小写
同一个对象再次被赋值时,R会自动覆盖存储对象中的信息,不会请求批准
ls
命令查看已经命名了哪些R对象ls()
对于两个不等长的向量,R会重复较短的向量以执行元素方式运算.
如果长向量的长度值不是短向量长度值的整数倍,R返回运算结果的同时也会返回一条警告消息.这种行为称为向量循环
如果需要使用矩阵乘法时,可使用
%*%
行内乘法,%o%
行外乘法
1.3 函数
-
round 函数四舍五入
-
factorial 阶乘操作
-
mean 平均值
-
sample(x=1:4,size=2) 从向量x中抽取size个元素并返回(默认使用不可放回抽样,可以设置参数replace=TRUE设为可放回抽样)
-
args(round) 查看round函数的所有参数名
-
typeof 查看某对象是什么类型
-
attributes 查看对象属性
给多个参数的函数设置参数值时候,将数据对象的名称与参数名用等号连起来,避免错误传递数据.R用户大多不会指定R函数的第一个参数的名称.
1.5 编写自定义函数
R函数包含三个部分:函数名,函数主体,参数集合
my_function<-function(x=默认值){}
如果键入函数名而不带上括号,那么R只会展示这个函数所存储的代码.如果带上这对括号,R就会运行这个函数所存储的代码.
R顺序执行函数主体的所有代码,并返回最后一行代码的运行结果,如果最后一行没有返回值,整个函数也不会返回值.
可以指定初始默认值
roll2<-function(bones=1:6){
dice<-sample(bones,size=2,replace=TRUE)
sum(dice)
}
提取函数
Code>Extract Function
1.8 小结
R语言两个重要组成部分:
- 对象用来存储数据
- 函数用来操作数据
2. R包与文档
R包
qplot来自R中的ggplot2包(可视化包),需先下载安装ggplot2包
R包可以从R官网下载: https://cran.r-project.org
也可以命令窗口运行命令:install.packages("ggplot2")
安装只是将R包安装在计算机的硬盘上.还需要在R会话中利用命令library("ggplot2")
加载该包.
c()
收集数据,例如x<-c(-1,-0.8,-0.6,-0.4,-0.2,0,0.2,0.4)
library("ggplot2")
x<-c(-1,-0.8,-0.6,-0.4,-0.2,0,0.2,0.4)
qplot(x)
# 直方图
qplot(x,binwidth=1)
replicate重复运行指定次数
replicate(3,1+1)
## 2 2 2
?sample
查看帮助页面?+函数名
3. R对象
R中最简单的对象类型叫做原子型向量
原子型向量就是最简单的包含数据的向量die<-c(1,2,3,4,5,6)
is.vector
测试某对象是否为原子型向量
双整型 numeric
双整型向量用来存储普通的数值型数据.数值可正可负,可大可小,R中键入的任何一个数值都默认以双整型存储.
typeof函数查看某个对象到底是什么类型.
整型 integer
整型数据的数值不需要小数点成分.
int<-c(-1L,2L,4L)
typeof(int)
## "integer"
4与4L唯一的区别就在于他们的存储方式.在计算机内存中,整型的定义方式比双整型更精确(除非整数非常大或非常小)
每个双整型的数值都只会大约精确到小数点后16位.
sqrt(2)^2-2肯定不等于零,因为有浮点误差.
字符型 character
逻辑性 logical
逻辑型向量存储TRUE,FALSE
全部大写不加引号 TRUE,FALSE
复数类型和原始类型 complex,raw
复数类型向量存储复数(complex)
原始类型向量用来存储数据的原始字节(raw(n))
3.2 属性
属性不会影响对象取值,显示该对象时也不会出现属性信息.属性算是对象的元数据(metadata)
attributes函数查看对象包含哪些属性信息,如果没有任何属性信息,会返回NULL
原子向量最常见的三个属性:名称,维度,类
每种属性都有自己的辅助函数,将相应属性附加给某个R对象,也可以查看属性值.
名称属性
# names赋值(字符向量长度应与die等长)
names(die)<-c("one","two","three","four","five","six")
# names查看对象名称属性
names(die)
## "one","two","three","four","five","six"
# 一次性删除名称属性值
names(die)<-NULL
维度属性
dim函数
# 2*3矩阵(两行三列)
dim(die)<-c(2,3)
# 3*2矩阵(三行两列)
dim(die)<-c(3,2)
# 1*2*3叉立方体(一行两列三切片)
dim(die)<c(1,2,3)
第一个值赋给行数,第二个数赋给列数.
第一列排满,再跳第二列排列
可人为控制(matrix或array函数)
3.3 矩阵
#matrix函数默认先排满第一列,再排第二列(设置byrow=TRUE)可先排第一行再排第二行
m<-matrix(die,nrow=2,byrow=TRUE)
m<-matrix(die,ncal=5,byrow=TRUE)
# array函数生成n维数组
ar<-array(C(11:14,21:24,31:34),dim=c(2,2,3))
3.5 类
类是原子型向量的一个特例.比如矩阵die是特殊双整型向量
改变die维度属性,R会添加一个class属性.这属性描述die具有的新格式.
class函数搜索class属性
class("Hello")
##"character"
3.5.1 日期,时间
除了六种类型:双整型,整型,字符型,逻辑性,复数型,原始型
R的属性系统还能表示更多数据类型
# 返回当前时间
now<-Sys.time()
now
## 2021-09