向量
创建向量:
利用c()来创建向量,注意c是小写的。
如:v <- c(1,4,4,3) 或 v <- c("apple","banana","orange")
返回某些元素:
如:v[c(2,3,4)] 或 v[2:4] 或 v[c(4,3)]
索引值从1开始。与matlab是类似的,利用向量中的每一个元素作为索引值来索取v中对应的值。其中v[c(4,3)] 会先返回第四个元素,再返回第三个元素。
删除某些元素:
如:v[-2] 或 v[-2:-4]
该操作并不能直接删除原向量中的某个元素,而是返回一个去掉该元素的新向量。“-”表示除去该元素,而非删除。
利用赋值可达到删除的效果:
v <- v[-2] 或 v <- v[-2:-4]
利用条件表达式获得元素:
如:v[v < 3] ;将返回v中小于3的元素。
寻找元素:
1.which(表达式)
如:which(v==3);返回的是符合表达式的元素的索引。
v <- c(2,2,4,4,6)
which(v==4)
> v <- c(2,2,4,4,6)
> which(v==4)
[1] 3 4
2.which.max()和which.min()
可以找到向量中的最大值和最小值的索引,且只返回第一个最值的索引。
随机数
R语言中的随机数是伪随机数,是由事先规定好的映射来实现的。
set.seed(num)
用于设置随机数种子,当num一样时,无论何时何地,产生的随机数都是一样的;并且每一次都各自相同。
runif(num,min = ,max = )
采用均匀分布产生随机数,其中num表示随机数的个数,min和max用于界定随机数的范围。
例子:
> set.seed(250)
> runif(3,0,100)
[1] 26.54018 77.90907 16.90836
> runif(3,0,100)
[1] 84.26782 79.99474 96.74011
> runif(3,0,100)
[1] 82.58289 14.05654 50.02645
换一个时间,换一台电脑,或者重新设置相同的随机数种子,产生的结果还是一样的。
当然,也可以用其他的分布产生随机数,如rnorm()正态分布等。
取整
x参数可以是数,也可以是向量。
floor(x):舍去小数后是不大于其的最大整数,如floor(7.2) = 7
celing(x) :舍去小数后是不小于其的最小整数,如floor(7.2) = 8
round(x,digits = 0):四舍五入,并根据digits参数(整数)来决定对x保留几位小数
帮助
?函数名
?round
会出现与该函数相关的帮助文档:
??某个想要查找的名称
当使用?找不到时,可以用??来查找与这个名称有关系的其他内容。
导入数据文件
导入本地数据
read.csv(file = "路径名")
以csv的形式打开文件。csv用“,”做分隔符。
read.table(file = "路径名")
以table形式打开文件。tab用“\t”做分隔符。
导入在线数据
如:read.csv("http://www.macalester.edu/kaplan/ISM/darasets/swim100m.csv")
查看默认路径
getwd()
设置默认路径
setwd()
attach(filename)
用于把文件中的每一列变为向量,并可以直接调用。
attach(data3)
data3内容如下图:
此时,year、time、sex均为向量,可以调用:
注:前面用中括号括起来的数字表示其后面的数字是第几个。比如1905是第一个,1986是第27个。
画图
一般的画图:
plot()
直方图(histogram):
hist()
break表示数据所分的组数,即直方图的柱子数
示例:
set.seed(123)
x <- rnorm(100,mean = 100,sd = 10)
set.seed(234)
y <- rnorm(100,mean = 100,sd = 10)
hist(x,breaks = 20)
直方图如下:
密度图
plot(density())
plot(density(x))
散点图 (scatter plot)
plot()
箱图
boxplot()
boxplot(x,y)
x与y都服从正态分布,集中在100附近(矩形表示),但y的中位数(黑实线表示)比x稍大一些。
~用于将某组数据根据某个元素分组,例如:time~sex,将时间根据sex分组,用boxplot(time~sex)绘图得到:
Q-Q Plot(quantile-quantile plot,分位数-分位数 图像):
调用qqnorm(x)得:
qqnorm(),qqline()
(1) 可用于判断是否正态分布
(2) 直线的斜率是标准差,截距是均值
(3) 点的散布越接近直线,则越接近正态分布
qqplot()
用于判断x,y是否符合线性关系。