2021-09-15 统计学——基于R(第四版)课后习题1.1题解以及注意事项分析

> names<-c("低收入户","中等偏下户","中等收入户","中等偏上户","高收入户")
> a<-c(3750,7338,10508,14823,28225)
> b<-c(4647,9330,13506,19404,36957)
> c<-c(6545,12674,18277,26044,49175)
> d<-c(8004,17024,24832,35576,67132)
> e<-c(10422,21636,31685,45639,85541)
> f<-data.frame("收入户等级"=names,"2016年"=a,"2017年"=b,"2018年"=c,"2019年"=d,"2020年"=e)
> f
> save(f,file="E:/代码/exerciae1.1.RData")
> matrix1_1<-matrix(cbind(a,b,c,d,e),ncol=5)
> dimnames(matrix1_1)<-list(c("低收入户","中等偏下户","中等收入户","中等偏上户","高收入户"),c("2016年","2017年","2018年","2019年","2020年"))
> matrix1_1

结果

> f
  收入户等级 X2016年 X2017年 X2018年 X2019年 X2020年
1   低收入户    3750    4647    6545    8004   10422
2 中等偏下户    7338    9330   12674   17024   21636
3 中等收入户   10508   13506   18277   24832   31685
4 中等偏上户   14823   19404   26044   35576   45639
5   高收入户   28225   36957   49175   67132   85541
> matrix1_1
           2016年 2017年 2018年 2019年 2020年
低收入户     3750   4647   6545   8004  10422
中等偏下户   7338   9330  12674  17024  21636
中等收入户  10508  13506  18277  24832  31685
中等偏上户  14823  19404  26044  35576  45639
高收入户    28225  36957  49175  67132  85541

初学R语言,在解题过程中,对此题而言,发现如下几点注意事项:

1、在R语言中文件路径使用“/”或“\\”而不是“\”;

2、在read.csv查看文件或read.table查看表格的途中会出现列名前被加上X的现象,可以设置参数check.names=F,也正是因为参数check.names其默认值为T,数字前会默认加上X,使其看上去更像一个字符;

read.csv(file,check.names=F)

3、在上述代码中设置矩阵列名以及行名的时候使用的是

dimnames(matrix)=list(row.names,column.names,matrix.names)

其中,dimnames的右端必须为列表形式,列表中参数分别为行名以及列名;

其次,还能使用colnames和rownames分别设置

> rownames(matrix1_1)=c("低收入户","中等偏下户","中等收入户","中等偏上户","高收入户")
> colnames(matrix1_1)=c("2016年","2017年","2018年","2019年","2020年")

然而当使用f[a,b](f为数据框)表示取的行和列时应注意数据框中第一行从列名下一行开始计算

因此当上述代码写作

> rownames(matrix1_1)=f[,1]

也是可行的,而对于列名来说若写作

 colnames(matrix1_1)=f[1,]

则会出现错误

Error in dimnames(x) <- dn : 
  length of 'dimnames' [2] not equal to array extent

原因是data_frame[:]设置列名或行名时没有与被设置的矩阵行数或列数相对应

当代码改成

> colnames(matrix1_1)=f[1,2:6]

则不出现错误,然而在逻辑上依旧不正确,因为这样所取的是数据框的第一行数据3750  4647  6545  8004 10422而非列名。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值