最新范文R语言 实验3 R基础三.docx
《最新范文R语言 实验3 R基础三.docx》由会员分享,可在线阅读,更多相关《最新范文R语言 实验3 R基础三.docx(7页珍藏版)》请在冰豆网上搜索。
最新范文R语言实验3R基础三
R语言实验3R基础(三)
一、实验目的:
1.掌握列表、数据框的相关运算;
2.掌握R对数据文件的读写操作;
3.掌握R的简单编程。
二、实验内容:
1.完成教材例题;
2.完成以下练习。
练习:
要求:
①完成练习并粘贴运行截图到文档相应位置(截图方法见下),并将所有自己输入文字的字体颜色设为红色(包括后面的思考及小结),②回答思考题,③简要书写实验小结。
④修改本文档名为“本人完整学号姓名1”,其中1表示第1次实验,以后更改为2,3,...。
如文件名为“**********张立1”,表示学号为**********的张立同学的第1次实验,注意文件名中没有空格及任何其它字符。
最后连同数据文件、源程序文件等(如果有的话),一起压缩打包发给课代表,压缩包的文件名同上。
截图方法:
法1:
调整需要截图的窗口至合适的大小,并使该窗口为当前激活窗口(即该窗口在屏幕最前方),按住键盘Alt键(空格键两侧各有一个)不放,再按键盘右上角的截图键(通常印有“印屏幕”或“PrScrn”等字符),即完成截图。
再粘贴到word文档的相应位置即可。
法2:
利用QQ输入法的截屏工具。
点击QQ输入法工具条最右边的“扳手”图标,选择其中的“截屏”工具。
)
1.自行完成教材P84页开始的
2.6-2.9节中的例题。
2.教材在讲解列表(List)时,所举例子的参数是有名参数。
这里我们练习创建一个
列表,其参数是无名参数,并回答以下问题。
(1)运行以下命令创建列表,注意每个元素的默认名称;
L<-list(12,c(34,56),matrix(1:
12,nrow=4),1:
15,list(10,11))
(2)L[[2]][2]的输出结果是什么?
请先自己写出结果,再运行验证;
[1]56
(3)用1:
10替换L的第四个元素,请写出命令,并运行验证;
>L[[4]]<-c(1:
10)
(4)将L的第五个元素中的11替换为20,请写出命令,并运行验证。
>L[[5]][2]<-20
运行结果截图
3.(习题2.4)生成一个5阶的Hilbert矩阵,
nnijh⨯=)(H,11-+=
jihij,i,j=1,2,…,n
(1)计算Hilbert矩阵H的行列式;
(2)求H的逆矩阵;
(3)求H的特征值和特征向量。
源代码:
>n<-5;H<-array(0,dim=c(n,n))
>for(iin1:
5){for(jin1:
5){
H[i,j]<-1/(i+j-1)
}
}
>H
>det(H)
>solve(H)
>eigen(H)
运行截图:
4.(习题2.5)已知有5名学生的数据,如下表所示。
用数据框的形式读入数据。
学生数据
解:
源代码:
>df<-data.frame(
Name=c("张三","李四","王五","赵六","丁一"),
Sex=c("女","男","女","男","女"),
Age=c(14,15,16,14,15),
Height=c(156,165,157,162,159),
Weight=c(42.0,49.0,41.5,52.0,45.5));df
运行截图:
5.(习题2.6)将上题中的数据表的中数据写成一个纯文本文件,用函数read.table()
读该文件,然后再用函数write.csv()写成一个Excel能打开的文件,并用Excel打开。
步骤:
(1)复制上表数据到记事本,并以ex2.6.txt为文件名保存在合适的目录中;
(2)在read.tabel()中利用file.choose(),打开对话框来读取此文件;
(3)用函数write.csv()将此文件以ex2.6.cxv为文件名保存。
(4)找到ex2.6.cxv,并打开它验证。
文件默认存在什么地方?
如何找到此文件?
如果想把此文件存放在D盘根目录下,如何修改代码?
源代码:
>df<-read.table(file.choose(),header=T)
>df
>write.csv(df,file=“ex2.6.cxv”)
>write.csv(df,file=“D:
/ex2.6.cxv”)
运行截图:
R->改变工作目录->
6.(习题2.7)编写一个R程序(函数)。
输入一个整数n,如果n≤0,则中止运算,
并输出一句话:
“要求输入一个正整数”;否则,如果n是偶数,则将n除2,并赋给n;否则,将3n+1赋给n。
不断循环,直到n=1,才停止计算,并输出一句话:
“运算成功”。
这个例子是为了检验数论中的一个简单的定理。
源代码:
Fun<-function(n){
if(n<=0)
list(fail="要求输入一个正整数")
else{
repeat{
if(n==1)break
elseif(n%%2==0){n<-n/2}
else
n<-3*n+1
}
list("运算成功")
}
}
运行截图:
思考:
1.列表元素除了可以用“列表名[[下标]]”、“列表名[["元素名"]]”这两种方式来引用
外,还有哪一种方式?
列表$元素名
2.列表与数据框有什么异同点?
异:
1)列表元素的类型可以任意类型,不同元素不必相同的类型,其中的元素经
常是向量和列表本身,元素本身允许是其他类型,长度不要求相同;
2)数据框通常是矩阵形式结构,数据框每一列是一个变量,每一行是一个观测,
各列表的成员必须是向量、因子、数值型矩阵、列表或其他数据框,数据框的变量
必须要相同的长度(行数)。
同:
数据框可以用data.frame()函数生成,其用法与列表list()函数相同
3.对于列表、数据框的编辑,edit()函数与fix()函数有什么不同?
edit()函数进行编辑、修改后的数据并没有保存在原列表或数据框,而是存在新的列表或数据,而fix()函数可以将编辑、修改后的数据保存原列表和数据框中。
4.当R读入其它格式的数据文件(如SPSS的数据)时,需要先输入一个什么样的命令?
>library(foreign)
三、实验小结(必写,但字数不限)
自己先把题算一遍,不要急于运行,算出结果,再运行检查结果是否一致,如果不一致,自己找出错误,重新再算,直到结果一致。
熟练课本的例题,掌握知识点,多练题,学会编写题中要求的函数。