【综合文库】
1. 用函数rep()构造一个向量x,它由3个3,4个2,5个1构成
答:rep((3,2,1),(3,4,5))即可,虽然创造出来的是 mode是 numeric,不过可以通过 factor等函数转为其它的格式。2.由1,2,3…16构成的两个方阵,其中矩阵A按列输入,矩阵B按行输入,计算:
C=A+B D=AB E=(eij)n*n
去除A的第3行,B的第3列,重新计算上面的矩阵E 答:A=matrix(1:16,nc=4,nr=4)
B=matrix(1:16,nc=4,nr=4,byrow=TRUE)
D=A%*%B如果是 A*B 则逐元乘积,如前面的形式则为 代数乘积。 问题:
1. 还有一个crossprod 交叉乘积,没有搞懂?不过 有个特点就是 当两个都是方阵,并且每个方阵内部的元素都是一样,则代数乘积和交叉乘积都是一样的。 试问 它们的区别在哪里?
2.E=(eij)n*n不知道是什么意思?
3.函数solve()有两个作用:solve(A,b)可以用于求解线性方程组Ax=b,solve(A)可以用于求
矩阵A的逆,设
A={{1,2,3},{4,5,6},{7,8,10}} B={{1},{1},{1}}
用两种方法编程求解方程组Ax=b的解。 答:两种方法 solve(A,b)
Solve(A)%*%b
可是一个奇怪的问题 就是 它们两个的值 不是相等的,这是为什么恩?4.设x和y表示n唯的向量,则x%*%y或者crossprod(x,y)可以用于求他们的内积,即
t(x)%*%y;而x%o%y或者outer(x,y)则用来求他们的外积(叉积),即x%*%t(y),其中t()表示矩阵或者向量的转置。设x=(1,2,3,4,5),y=(2,4,6,8,10).用三种不同的方法求他们的内积和外积。
答: 只要搞懂这一点就Ok了,一维向量 被默认为是 列向量。本题解答如下:
X=1:5y=seq(2,10,by=2)
X%*%y t(x)%*%ycrossprod(x,y)X%o%yx%*%t(y)outer(x,y)
5. 编写一个用二分法求非线性方程根的函数,并求方程 x3-x-1=0在区间 [1,2]内的跟,
精读要求是 e=10(-5)。
答: 问题已经得到了部分的解决。 如果在连续区间里面面 存在着一个根的话,那么这种方法一定可以找到一个根的。
令人感到意外的就是: middle可以利用 min,max更新,要注意求精确度的条件是相对abs()绝对值而言的。
PS:下面的问题 ,还是没有解决:
1. 其它的解非线性方程根的方法,如利用斜率,什么牛顿方法 以及它们效率的比较改
如何?
2. 如果给的是定义域,不是值所在的区间的话,外加只是告诉你根的数目,这个时候 改
如何改写这个函数;另外就是,如果根的个数也不告诉你,有该如何进一步拓展这个函数呢?
mysolve<-function(f,min,max,e){ result=list()
middle=(min+max)/2 if(f(min)*f(max)<0){
while(abs(f(middle))>e){
{if(f(min)*f(middle)<0) max=middle elsemin=middle } middle=(min+max)/2 }
result=middle }else{
result=\}result } 6.自己编写一个函数,求数据y=(y1,y2,y3,y4,…yn)的均值、标准差、偏度和峰度。
答:
Skewness和 kurtosis是偏度和峰度的函数,但是它们不在基本包base中间,而是在Fbasics中间.
另外,如何将结果存在一个list表中间,然后可以按名称索引list表中的方法呢? 很简单。Result=list(name1=dat1,name2=dat2…)即可
表2.8学生身高和体重数据
序号 1 2 3 4 5 6 7 8 9 10
7. 有10名学生的身高和体重数据如表2.8所示
1. 用数据框的数据读入数据
2. 将数据表2.8写成一个纯文本的文件,并用函数read.table()读入该文件中的数据 3. 用函数write.csv()写成一个能用excel打开的文件,测试是否成功。 答:1.edit(data.frame())->name1
如果要对其进行修正,请使用fix(name1)
2 read.table/csv(file,header=TRUE/FALSE) write.table/csv(data,file,row.names=FALSE)
3.原来 csv文件,可以使用excel打开编辑的,TMD的太爽了。
PS:今天的话,还学会了Date这个数据型。
想想日期该表示什么类型的数据呢?数字 或者字符,字符的话,操作是相当不方便。 但是数字的话,该如何按常有的规律现实呢?
不如定义一个新的类别Date,其data为numeric类型,存储数字,这个数字是距离1970-1-1日的天数。当需要现实这个数据的时候,按 年月日现实。 当然也可以 按 特定的格式进行现实,请记住下列的三个函数As.Date(x,format=””)
As.Date(x,origin=”1988-11-1”) 其中x为numeric类型对象
Format(date,”%y年%m月%d日”)其中date是Date类型对象
有一个问题:四种基本类型numeric complexboolcharater----factordata.framematrixlist 的区分中 Date应该排在什么位置?
现在的答案 应该是 属于后者。 mode(date)的结果是 numeric,虽然mode(list)是list,但是考虑到 mode(factor)也可以是numeric,所以Date应该是建立在原子类型上的类型.另外最主要的是 class(factor) class(list)依然是 factor,list,这同class(date)是 data一样的
性别 F F F F M M M M M M
年龄 14 16 15 17 15 14 16 14 15 16
身高/cm 156 158 161 156 153 162 157 159 163 165
体重/kg 42.3 45.0 48.5 51.5 44.6 48.8 46.7 49.9 50.2 53.7
查看全文
false