r统计建模与r软件期末考试题_统计建模与R软件习题二答案

这篇博客介绍了R语言中的矩阵运算,包括向量相加、矩阵乘法、内积、外积等,并展示了如何创建和操作Hilbert矩阵。此外,还讲解了data.frame的创建及读写操作,最后通过一个函数演示了如何处理正整数直到其变为1的过程。
摘要由CSDN通过智能技术生成

# 习题2

# 2.1

x=c(1,2,3)

y=c(4,5,6)

e=c(rep(1,3))

z=2*x+y+e;z

x%*%y # 若x,y如答案那样定义为矩阵,则不能用%*%,因为,维数不对应,

x%o%y

# 答案

x

y

e

z

crossprod(x,y)#内积

outer(x,y)#外积

# 2.2

A=matrix(1:20,4,5);A

B=matrix(1:20,4,5,byrow=T);B

C=A+B;C

D=crossprod(A,B);D# D=A%*%B;D 错误 维数不对应,题目有错,本来就不可能AB

E=A*B;E

F=A[1:3,1:3];F

G=B[,c(1,2,4,5)];G # G

# 答案

A

B

C

#D

E

F

G

# 2.3

x=c(rep(1,5),rep(2,3),rep(3,4),rep(4,2));x

#答案同上

# 2.4

Hilbert=function(n=5){

H=matrix(0,nrow=n,ncol=n)

for (i in 1:n){

for (j in 1:n)

H[i,j]=1/(i+j-1)

}

H # 返回值,

list(Hmatrix=H,det=det(H),sol=solve(H),eig=eigen(H)) # 多元返回值

}

H=Hilbert(5);H

det(H)

solve(H)

eigen(H)

# 学会了function,对上述进行以下修改

funcH=function(n=5) {

H=matrix(0,n,n)

for (i in 1:n) {

for (j in 1:n) {

H[i,j]=1/(i+j-1)

}

}

H # 返回值,输入H

# list(Hmatrix=H,det=det(H),sol=solve(H),eig=eigen(H))

# 也可以以列表形式输出多个返回值,同时能给每个元素定义元素名

# 如 list(Hilbert=H)

list(Hilbert=H)

}

funcH()

#2.4答案 5价Hilbert矩阵

n

x

for(i in 1:n){

for(j in 1:n){

x[i,j]

}

}

x

det(x)#矩阵行列式

solve(x)#逆矩阵

eigen(x)#特征值与特征向量

# 2.5 data.frame()

studentdata=data.frame('姓名'=c('张三','李四','王五','赵六','丁一'),

'性别'=c('女','男','女','男','女'),'年龄'=c(14,15,16,14,15),

'身高'=c(156,165,157,162,159),'体重'=c(42,49,41.5,52,45.5))

#studentdata=data.frame('序号'=1:5,'姓名'=c('张三','李四','王五','赵六','丁一'),

# '性别'=c('女','男','女','男','女'),'年龄'=c(14,15,16,14,15),

# '身高'=c(156,165,157,162,159),'体重'=c(42,49,41.5,52,45.5))

# 不需要输入序号。

write.table(studentdata,'Re2.5.txt')

# 答案

student

sex=c("f","m","f","m","f"),

age=c("14","15","16","14","15"),

height=c("156","165","157","162","159"),

weight=c("42","49","41.5","52","45.5"))

# 2.6

st=read.table('Re2.5.txt',header=T)

write.csv(st,'Re2.5.csv')

#2.6 答案

student1

student2

student3

# 2.7

func=function(n) {

if (n<=0) "要求输入一个正整数"

else {

while(n!=1) {

if (n%%2==0) n=n/2

else n=3*n+1}

"运算成功"

}

} # R中定义的函数,没有专门的返回值设置,只相当于代码复制粘贴,

func(8) #返回值为代码的输出值

# 答案

#2.7

func

if(n<=0) list("要求输入一个正整数")

else{

repeat{

if(n==1) break

else if(n%%2==0){n

else n

list("运算成功")

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值