产生向量:
1、x=1:10
2、x=2:60*2+1
3、x[5] #取向量的第5个元素
4、x[-5] #将向量的第5个元素去掉
5、x[c(2,4,7)] #取向量的第2,4,7个元素
6、x[x<20] #取向量中小于20的元素
7、x[x>30 & x<50] #取向量中大于30小于50的元素
8、seq(起始值,重点值,步长) #序列发生器产生向量(by 或length选择步长)
9、letters[1:30] #产生1到30个字母
which.min(a); #返回向量中最小值的位置
which(x>5); #返回向量中大于5的元素的位置
rev(x); #求向量的反转
sort(x); #求向量进行排序
向量的计算:
x=c(a,b,c,d,e,f,g); #对向量赋值
length(x); #求向量的长度
rbind(x1,x2); #将向量组成行向量
cbind(x1,x2); #将向量组成列向量
mean(x); #求向量元素的均值
sum(x); #求向量元素的和
min(x); #求向量元素的最小值
max(x); #求向量元素的最大值
var(x); #求向量元素的方差
prod(x); #求向量元素的和乘积
sd(x); #求向量元素的标准差
生成矩阵:
x=c(1:12); a=b=matrix(x,nrow=3,ncol=4); #将1到12的数组变成3行4列的矩阵
t(a); #矩阵的转置
a+b; #a与b矩阵相加
a-b; #a与b矩阵相减
a%+%b #a与b矩阵相乘
diag(a) #求a的特征矩阵
diag(4) #生成4行4列的单位矩阵
solve(a) #求矩阵a的逆矩阵
solve(a,b) #解方程组a*x=b
eigen(a) #求矩阵a的特征向量
apply(x,1(2),mean(min/max)) #在矩阵的行(列)上求均值(最大值/最小值)
读入数据
数据框:x=data.frame(x1,x2)
读文本文件数据:
将文本放入工作目录,输入:(x=read.table(“abc.txt”))
读剪切板,复制后输入:y<-read.table(“clipboard”,header=F)
读Excel文件数据:
0、install.packages("readxl") ##下载和引用
library(readxl)
read_excel("old_excel.xls") # #读取Excel
1、先把Excel另存为空格分隔的prn文本格式再读:w<-red.table(“test.prn”,header=T)
2、安装RODBC包,再通过ODBC读:
library(RODBC) #装载RODBC包
z<-odbcConnectExcel(“test.xls) #将Excel数据读入z数据框里
(w<-sqlFetch(z,”Sheet1”)) #读出数据
3、install.packages("xlsx")
library(xlsx)
read.xlsx(file, sheetIndex)
write.xlsx(x,file)
读CSV格式文件数据:
写入csv:输入csv使用内置函数write.csv()来实现
读取csv:读取csv使用函数read.csv()来读取
例:
写入CSV格式数据:
data <- data.frame(姓名 = c("张三", "李四", "王五"), 体重 = c(50, 70, 80), 视力 = c(5.0, 4.8, 5.2))
data
姓名 体重 视力
1 张三 50 5.0
2 李四 70 4.8
3 王五 80 5.2
write.csv(data, file = "data.csv")
有时,我们需要把列名去掉,就需要使用row.names = FALSE或者row.names = F
write.csv(data, file = “data.csv”, row.names = FALSE)
有时候数据里面存在NA,要去掉NA的,就再加一个na = “”
write.csv(data, file = “data.csv”, row.names = FALSE, na = “”)
如果要省略行名的话,就稍微复杂一点,需要使用write.table()的col.names = FALSE, sep = “,”
write.table(data, file = “data.csv”, row.names = FALSE, na = “”, col.names = FALSE, sep = “,”)
读取CSV格式数据:
newdata <- read.csv(file = “data.csv”, header = TRUE)
newdata
姓名 体重 视力
1 张三 50 5.0
2 李四 70 4.8
3 王五 80 5.2
循环语句:
write.csv(data, file = "data.csv")
for语句:for(i in 1:59)
while语句:a[1]=5; i=1; while(a[i]<121) {i=i+1;a[i]=a[i-1]+2}
R脚本:
print函数:脚本里显示变量值
source函数:写r脚本,运行source(“D:\h.r”)
作图:
直方图绘制函数hist:hist(x$x1)
散点图绘制函数plot:
plot(x$x1,x$x2,
main="数学分析与线性代数成绩的关系", #设置标题
xlab="数学分析", #设置x轴的注解
ylab="线性代数", #设置y轴的注解
xlim=c(0,100), #设置x轴的变化范围
ylim=c(0,100), #设置y轴的变化范围
xaxs="i", #设置x轴样式为内部样式
yaxs="i", #设置y轴样式为内部样式
col="red", #将绘图符号的颜色设置为红色
pch=19) #将绘图符号设置为填充点
连线图:a=c(2,3,4,5,6); b=c(4,7,8,9,12); plot(a,b,type=“l”)
向日葵散点图:sunflowerplot(iris[, 3:4], col = “gold”, seg.col = “gold”)
散点图集:pairs(iris[,1:4]) 或 plot(iris[,1:4]) 或
par(mfrow=c(3,1)) plot(x1,x2);plot(x2,x3);plot(x3,x1)
三维散点图:安装scatterplot3d包,scatterplot3d(x[2:4])
列联函数table(统计每类的数量):table(x x1))
饼图绘制函数pie:pie(table(x x1,x x3)
水平放置的箱尾图:boxplot(x x2,x x1)
QQ图(判断是否正态分布):qqnorm(x)或qqline(x)
密度图绘制函数density:plot(density(rnorm(1000)))
三维作图:
x<-y<-seq(-2*pi, 2*pi, pi/15)
f<-function(x,y) sin(x)*sin(y)
z<-outer(x, y, f)
contour(x,y,z,col="blue")
persp(x,y,z,theta=30, phi=30, expand=0.7,col="lightblue")
绘图参数:
dev.new() #新建一个图形窗口
dev.cur() #看到当前的图形窗口
dev.list() #查看当前绘图窗口的数量
dev.nest() #查看下一个绘图窗口
扩展:
数据抓取
------网络爬虫RCurl
数据加工
------金融数据分析quantmod、数据加工厂plyr
数据可视化
------数据可视化包ggplot2、交互化展示包shiny