【R实验.2】数据结构&计算

解法并不单一,下列方法带有璇子个人的偏好,因此仅供参考。如有错误,欢迎在评论区斧正!

2.1 建立一个R 文件,在文件中输入变量 x=(1,2,3)^T, y=(4,5,6)^T,并作以下运算。
(1)计算z=2x+y+e,其中e=(1,1,1)^T;
(2)计算x 与y 的内积;
(3)计算x 与y 的外积。

变量输入:
x <- c(1,2,3)
y <- c(4,5,6)
e <- rep(1,3)
计算:
(1)z <- 2*x+y+e
(2)z1 <- x%*%y
(3)z2 <- x%o%y 或 outer(x,y,FUN = "*") #两种方法都可

结果:
> z
[1]  7 10 13

> z1          注:1*4+2*5+3*6
     [,1]
[1,]   32  

> z2                 注:x向量元素逐个与y相乘形成矩阵
     [,1] [,2] [,3]
[1,]    4    5    6
[2,]    8   10   12
[3,]   12   15   18

2.2 将1,2,…,20 构成两个4×5 阶的矩阵,其中矩阵A 是按列输入,矩阵B 是按行输入,并作
如下运算。
(1)C=A+B
(2)D=AB‘
(3)E=(eij)n×n,其中eij =aij.bij
(4)F 是由A 的前3 行和前3 列构成的矩阵
(5)G 是由矩阵B 的各列构成的矩阵,但不含B 的第3 列。

变量输入:
A <- matrix(c(1:20),4,5,byrow = F)
B <- matrix(c(1:20),4,5,byrow = T)
计算:
(1)c <- A+B
(2)D <- A%*%t(B) #内积
(3)E <- A*B  
(4)F <- A[c(1:3),c(1:3)]
(5)G <- B[,-3]
结果:
> c
     [,1] [,2] [,3] [,4] [,5]
[1,]    2    7   12   17   22
[2,]    8   13   18   23   28
[3,]   14   19   24   29   34
[4,]   20   25   30   35   40
> D
     [,1] [,2] [,3] [,4]
[1,]  175  400  625  850
[2,]  190  440  690  940
[3,]  205  480  755 1030
[4,]  220  520  820 1120
> E
     [,1] [,2] [,3] [,4] [,5]
[1,]    1   10   27   52   85
[2,]   12   42   80  126  180
[3,]   33   84  143  210  285
[4,]   64  136  216  304  400

> F
     [,1] [,2] [,3]
[1,]    1    5    9
[2,]    2    6   10
[3,]    3    7   11
> G
     [,1] [,2] [,3] [,4]
[1,]    1    2    4    5
[2,]    6    7    9   10
[3,]   11   12   14   15
[4,]   16   17   19   20

2.3 构造一个向量x,向量是由5 个1,3 个2,4 个3 和2 个4 构成,注意用到rep()函数。

数据生成:
x <- c(rep(1,5),rep(2,3),rep(3,4),rep(4,2))
> x 
[1] 1 1 1 1 1 2 2 2 3 3 3 3 4 4

2.4 生成一个5 阶的Hilbert 矩阵,
H=(hij)n×n, h i j = 1 i + j − 1 hij =\frac{1}{i+j-1} hij=i+j11, i,j=1,2,…,n.

利用Matrix包生成Hilbert矩阵:
> install.packages("Matrix")
> library(Matrix)
> H <- Hilbert(5) #该矩阵也可利用循环语句得到,此处略

(1)计算Hilbert 矩阵H 的行列式
(2)求H 的逆矩阵
(3)求H 的特征值和特征向量

1det(H)2solve(H)3eigen(H)
结果:
> det(H)
> [1] 3.749295e-12
> 
> solve(H)
5 x 5 Matrix of class "dpoMatrix"
      [,1]   [,2]    [,3]    [,4]   [,5]
[1,]    25   -300    1050   -1400    630
[2,]  -300   4800  -18900   26880 -12600
[3,]  1050 -18900   79380 -117600  56700
[4,] -1400  26880 -117600  179200 -88200
[5,]   630 -12600   56700  -88200  44100

> eigen(H)
eigen() decomposition
$values
[1] 1.567051e+00 2.085342e-01 1.140749e-02 3.058980e-04
[5] 3.287929e-06

$vectors
           [,1]       [,2]       [,3]        [,4]
[1,] -0.7678547  0.6018715 -0.2142136  0.04716181
[2,] -0.4457911 -0.2759134  0.7241021 -0.43266733
[3,] -0.3215783 -0.4248766  0.1204533  0.66735044
[4,] -0.2534389 -0.4439030 -0.3095740  0.23302452
[5,] -0.2098226 -0.4290134 -0.5651934 -0.55759995
             [,5]
[1,]  0.006173863
[2,] -0.116692747
[3,]  0.506163658
[4,] -0.767191193
[5,]  0.376245545

2.5 已知有5 名学生的数据,如表2-4 所示,用数据框的形式读入数据。
在这里插入图片描述

变量取值:
SID <- c(1:5)
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)

数据框生成:
> chart <- data.frame(SID,NAME,SEX,AGE,HEIGHT,WEIGHT)
> chart
  SID NAME SEX AGE HEIGHT WEIGHT
1   1 张三  女  14    156   42.0
2   2 李四  男  15    165   49.0
3   3 王五  女  16    157   41.5
4   4 赵六  男  14    162   52.0
5   5 丁一  女  15    159   45.5

2.6 将习题2.5 中的数据表2-4 的数据写成一个纯文本文件,用函数read.table()读该文件,然后再用函数write.csv()写成一个能用excel 表能打开的文件,并用excel 表打开。

①读取文本文件:

> setwd("~/RData")
> read.table('24.txt',header = T)  
SID NAME SEX AGE HEIGHT WEIGHT
1   1 张三  女  14    156   42.0
2   2 李四  男  15    165   49.0
3   3 王五  女  16    157   41.5
4   4 赵六  男  14    162   52.0
5   5 丁一  女  15    159   45.5

②书写文件并用excel打开

> m <- read.table('24.txt',header = T)
> write.csv(m,file = "mydata.csv",row.names = F)

在Rstudio右下的file处可见新生成的文件
在这里插入图片描述
用excel打开mydata.csv:
在这里插入图片描述

  • 9
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值