您当前的位置: 首页 >  r语言

R语言基础题及答案(二)——R语言与统计分析第二章课后习题(汤银才)

发布时间:2021-09-15 18:27:25 ,浏览量:9

R语言与统计分析第二章课后习题(汤银才) 题-1

用函数rep( )构造一个向量x, 它由3个3, 4个2, 5个1构成.

x<-rep(c(3,2,1),times=c(3,4,5));print(x) 

[1] 3 3 3 2 2 2 2 1 1 1 1 1

题-2

由1, 2, . . . , 16构成二个方阵, 其中矩阵A按列输入, 矩阵B按行输入, 并 计算:

  1. C=A+B;

  2. D=A.*B;

  3. E=AB;

  4. 去除A的第3行, B的第3列, 重新计算上面的矩阵E

# 构造矩阵A B A<-matrix(data=1:16,4) B<-matrix(data=1:16,4,byrow=TRUE) # 1)C=A+B C<-A+B;print(C) # 2)D=A.*B D<-A*B;print(D) # 3)E=A*B E<-A%*%B;print(E) # 4)E=A[-3,]*B[,-3] E<-A[-3,]%*%B[,-3];print(E) 

…[,1] [,2] [,3] [,4] [1,] 2 7 12 17 [2,] 7 12 17 22 [3,] 12 17 22 27 [4,] 17 22 27 32 . …[,1] [,2] [,3] [,4] [1,] 1 10 27 52 [2,] 10 36 70 112 [3,] 27 70 121 180 [4,] 52 112 180 256 . …[,1] [,2] [,3] [,4] [1,] 276 304 332 360 [2,] 304 336 368 400 [3,] 332 368 404 440 [4,] 360 400 440 480 . … [,1] [,2] [,3] [1,] 276 304 360 [2,] 304 336 400 [3,] 360 400 480

题-3

函数solve( )有二个作用: solve(A,b)可用于求解线性方程组Ax=b, solve(A)可用于求矩阵A的逆. 设 A = [ 1 2 3 4 5 6 7 8 10 ] , b = [ 1 1 1 ] \mathbf{A}=\left[\begin{array}{lll}1 & 2 & 3 \\4 & 5 & 6 \\7 & 8 & 10\end{array}\right], \quad b=\left[\begin{array}{l}1 \\1 \\1\end{array}\right] A=⎣⎡1472583610⎦⎤,b=⎣⎡111⎦⎤

用二种方法编程求方程组Ax=b的解

# 矩阵和向量定义 A<-matrix(data=c(1:8,10),3,byrow=TRUE);print(A) b<-matrix(rep(1,3),3) # 法一 solve(A,b) # 法二 solve(A)%*%b

…[,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 7 8 10 . …[,1] [1,] -1.000000e+00 [2,] 1.000000e+00 [3,] 3.330669e-16 . … [,1] [1,] -1.000000e+00 [2,] 1.000000e+00 [3,] 4.440892e-16

题-4

设x与y表示n维的向量,则x%*%y或crossprod(x,y)用于求它们的内积, 即t(x)%*%y; 而x%o%y或outer(x, y)用于求它们的外积(outer product 符号用aob表示,注意和叉积区分cross product符号用axb表示), 即x%*%t(y), 其中(t( ))表示矩阵或向量的转置. 设x=(1, 2, 3, 4, 5), y=(2, 4, 6, 8, 10)用三 种不同的方法求它们的内积与外积.

# 构造 x=1:5 y=x*2 # 内积 x%*%y t(x)%*%y crossprod(x,y) # 外积 x%o%y
x%*%t(y) outer(x, y) 

…[,1] [1,] 110 . …[,1] [1,] 110 . …[,1] [1,] 110 . … [,1] [,2] [,3] [,4] [,5] [1,] 2 4 6 8 10 [2,] 4 8 12 16 20 [3,] 6 12 18 24 30 [4,] 8 16 24 32 40 [5,] 10 20 30 40 50 . … [,1] [,2] [,3] [,4] [,5] [1,] 2 4 6 8 10 [2,] 4 8 12 16 20 [3,] 6 12 18 24 30 [4,] 8 16 24 32 40 [5,] 10 20 30 40 50 . … [,1] [,2] [,3] [,4] [,5] [1,] 2 4 6 8 10 [2,] 4 8 12 16 20 [3,] 6 12 18 24 30 [4,] 8 16 24 32 40 [5,] 10 20 30 40 50

题-5

编写一个用二分法求非线性方程根的函数, 并求方程

x 3 − x − 1 = 0 x^3 - x -1 = 0 x3−x−1=0

在区间 [ 1 , 2 ] [1, 2] [1,2]内的根, 精度要求 ϵ = 1 0 − 5 \epsilon=10^{-5} ϵ=10−5

# f:待求方程 # xl:自变量下限,xu:自变量上限 # eps:精确度 # xm:中点值(xu+xl)/2 fzero<-function(f,xl,xu,eps=1e-5){ if(f(xl)*f(xu)>0){ print("找不到该区间内的零点") }else{ while(xu-xl>eps){ xm<-(xu+xl)/2 if(f(xu)*f(xm)<0){xl<-xm}else{xu<-xm} } root<-(xu+xl)/2 } root } # f=x^3-x-1 f<-function(x){x^3-x-1} # 调用函数求零点 fzero(f,1,2,eps=1e-5) 

[1] 1.324718

题-6

自己编写一个函数, 求数据 y = ( y 1 , y 2 , . . . , y n ) y=(y_1, y_2, . . . , y_n) y=(y1,y2,...,yn)的均值、标准差、偏度与峰度.

library(fBasics) # 写汉语比较有意思 getData<-function(y){ result<-list( "均值"=mean(y), "标准差"=sd(y), "偏度"=skewness(y), "峰度"=kurtosis(y) ) } y=1:10 result<-getData(y) result$均值
result$标准差
result$偏度
result$峰度

[1] 5.5 [1] 3.02765 [1] 0 attr(,“method”) [1] “moment” [1] -1.561636 attr(,“method”) [1] “excess”

题-7

有10名学生的身高与体重数据如表2.7所示.

1)用数据框的形式读入数据;

2)将数据表2.7写成一个纯文本的文件, 并用函数read.table( )读取该文件中的数据;

表 2.7 学生身高与体重数据

序号 性别 年龄 身高/cm 体重/kg 1 F 14 156 42.3 2 F 16 158 45.0 3 F 15 161 48.5 4 F 17 156 51.5 5 F 15 153 44.6 6 M 14 162 48.8 7 M 16 157 46.7 8 M 14 159 49.9 9 M 15 163 50.2 10 M 16 165 53.7
  1. 用函数write.csv( )写成一个能用Excel打开的文件, 测试是否成功.
# 数据框构造 info<-data.frame("序号"=1:10,"性别"=c(rep("F",5),rep("M",5)),"年龄"=c(14,16,15,17,15,14,16,14,15,16),"身高/cm"=c(156,158,161,156,153,162,157,159,163,165),"体重/kg"=c(42.3,45.0,48.5,51.5,44.6,48.8,46.7,49.9,50.2,53.7)) print(info) # txt写入及导入 write.table(info,file="info.txt") read.table("info.txt") # csv写入及导入 write.csv(info,file="info.csv") read.csv("info.csv") 

在这里插入图片描述

关注
打赏
1688896170
查看更多评论

暂无认证

  • 9浏览

    0关注

    115984博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0727s