R语言学习总结Word下载.docx
- 文档编号:15175508
- 上传时间:2022-10-28
- 格式:DOCX
- 页数:14
- 大小:42.45KB
R语言学习总结Word下载.docx
《R语言学习总结Word下载.docx》由会员分享,可在线阅读,更多相关《R语言学习总结Word下载.docx(14页珍藏版)》请在冰豆网上搜索。
R语言允许将不同类型的元素放在一个集合中,这个集合叫做一个列表,列表元素总可以用“列表名[[下标]]”的格式引用。
而“列表名[下标]”表示的是一个子列表,这是一个很容易混淆的地方。
R语言中非常重要的一种数据结构是data.frame(数据框),它通常是矩阵形式的数据,但每列可以是不同类型,数据框每列是一个变量,每行是一个观测,要注意的是每一列必须有相同的长度。
数据框元素可以使用下标或者下标向量引用。
用一个非常简单的例子来说明向量、矩阵和数据框的简单运用。
输入:
A<
-matrix(c(1:
12),2,6,byrow=T)#A为一个2行6列,按行排列的矩阵X<
-as.data.frame(A)#把A转化成数据框形式的X
X[1:
2,seq(1,5,2)]#输出X的第1、2行和1、3、5列
输出:
V1V3V5
1135
27911
attach(X);
R<
-V1/V5;
R#调用数据框X,计算并输出V1和V5的比值
[1]0.20000000.6363636
与此同时R语言中也提供了其它高级程序语言共有的分支、循环等程序控制结构。
比如if/else语句,for循环等。
因此R语言也可以很容易的根据情况编写自己所需要的函数。
例:
编写一个R程序,输入一个整数n,如果n小于等于0,中止运算,并输出:
“要求输入一个正整数”;
否则,如果n是偶数,则将n除2赋值给n;
否则将3n+1赋给n。
不断循环,直到n=1停止,并输出:
“运算成功”
解:
新建一个程序脚本,名为chapter2.R”,写入代码:
f<
-function(n){
if(n<
=0)list("
要求输入一个正整数"
)
else{repeat{
if(n==1)break#n=1时终止elseif(n/2==as.integer(n/2))n<
-n/2#n为偶数时除2elsen<
-3*n+1
}
list("
运算成功"
在R窗口中
Source(“chapter2.R”);
f(32)
[1]"
f(-5)
2、R在统计描述中的应用
数据框操作(plyr包)
辅助小函数
1splat函数:
作用:
把原函数中多个参数打包为一个list作为参数,然后输出新的函数。
也就是说本来某个函数需要输入多个参数,现在套上splat后,只要输入一个参数list就可以了,不需要单独地输入参数。
它的作用结果是把一个函数变成一个新函数。
m*ply(a_matrix,FUN)的作用和a*ply(a_matrix,1,splat(FUN))一样
例:
(1)参数使用
>
hp_per_cyl<
-function(hp,cyl,...)hp/cyl
splat(hp_per_cyl)(mtcars[1,])
1]18.33333
splat(hp_per_cyl)(mtcars)
[1]18.3333318.3333323.2500018.3333321.8750017.5000030.6250015.5000023.75000
[10]20.5000020.5000022.5000022.5000022.5000025.6250026.8750028.7500016.50000
[19]13.0000016.2500024.2500018.7500018.7500030.6250021.8750016.5000022.75000
[28]28.2500033.0000029.1666741.8750027.25000
等价于:
hp_per_cyl(mtcars$hp,mtcars$cyl)
splat函数的优点就是可以不用拆分字段,可以一起输入作为参数。
(2)与plyr函数合用:
f<
-function(mpg,wt,...)data.frame(mw=mpg/wt)
ddply(mtcars,.(cyl),splat(f))
2each函数
作用:
把多个函数汇聚成一个函数,当使用这个函数时,将分别作用多个函数。
不足:
不能给作用的函数指定附加参数,只能使用默认参数。
fun<
-function(x)c(min=min(x),max=max(x),mean=mean(x))
fun(1:
10)
等价于:
-each(min,max,mean)
f(1:
3colwise函数
colwise(.fun,.cols,...)
说明:
.fun:
要转化的函数;
.cols是测试数据框的列是否应包含的判别函数或者是·
要包含的列的名称。
catcolwise(.fun,...)与colwise功能类似,只是对离散型变量有效
numcolwise(.fun,...)与colwise功能类似,只是对数值型变量有效
把作用于数据框行向量的函数(如mean,median等)转化为作用于数据框列向量的函数。
于plyr函数一起使用十分方便。
作用结果生成一个新的函数。
nmissing<
-function(x)sum(is.na(x))
colwise(nmissing)(baseball)
colwise(nmissing,.(sb,cs,so))(baseball)
ddply(baseball,.(year),colwise(nmissing,.(sb,cs,so)))
numcolwise(nmissing)(baseball)
colwise(nmissing,is.numeric)(baseball)
catcolwise(nmissing)(baseball)
colwise(nmissing,is.discrete)(baseball)
4failwith函数
failwith(default=NULL,f,quiet=FALSE)
修正一个函数,使得当该函数出现错误时返回一个设定的默认值,默认为空。
-function(x)if(x==1)stop("
Error"
)else1
f
(1)
Errorinf
(1):
Error
safef<
-failwith(,f)
safef
(1)
Errorinf(...):
NULL
>
-failwith(12,f,quiet=TRUE)
[1]12
5summarise()函数
summarise(.data,...)
对数据框做统计汇总,…为设定的统计方法或函数
例:
summarise(baseball,duration=max(year)-min(year),nteams=length(unique(team)))
durationnteams
1136132
head(ddply(baseball,"
id"
summarise,duration=max(year)-min(year),nteams=length(unique(team))))
iddurationnteams
1aaronha01223
2abernte02177
3adairje01124
4adamsba01202
5adamsbo03134
6adcocjo01165
数据集变量操作
1变量排序:
arrange函数
arrange(df,.(var1),.(var2)…)
按照指定列排序。
注意:
使用arrange函数排完序后行名会丢失,需要用cbind补回。
arrange(mtcars,cyl,disp)
cars<
-cbind(vehicle=row.names(mtcars),mtcars)
arrange(cars,cyl,disp)
------先把行名作为一个新的列加到数据框再排序
2更改变量名
rename(x,replace,warn_missing=TRUE)
通过名字修改变量名字,不是根据它的位置。
head(rename(tmt,replace=c("
mpg"
="
avgpg"
”cly”=”new”)))
3取行或列的数据
take(x,along,indices,drop=FALSE)
在x中,按照某个维度取数。
参数说明:
x为取数的源数据,可以是array或者dataframe;
along:
维度。
1表示行,2表示列,3表示数组快等等;
indices:
具体维度所对应的指;
drop:
是否整合
例:
take(mtcars,2,1)--取第一列
take(mtcars,1,1)--取第一行
数据集操作
1数据集链接
1)match_df
match_df(x,y,on=NULL)
x为原始的需要提取的数据框,y为条件数据框;
on指定用来连接的变量,默认为两个数据框中所有变量,可以为多个。
通过on后面的字段,到x数据框取选取数据,相当于innerjoin,区别为:
前者结果集是x的一个子集;
innerjoin包括两个数据框中所有字段。
基础数据
a<
-c("
a"
"
b"
c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学习 总结
![提示](https://static.bdocx.com/images/bang_tan.gif)