博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
统计分析与R软件-chapter2-6
阅读量:7040 次
发布时间:2019-06-28

本文共 3947 字,大约阅读时间需要 13 分钟。

2.6 列表与数据框

2.6.1 列表

1.列表的构造

列表是一种特别的对象集合,它的元素也由序号(下标)区分,但是各元素的类型可以是任意对象,不同元素不必是同一类型,元素本身允许是其他复杂数据类型,比如,列表的一个元素也允许是列表

> Lst<-list(name="Fred",wife="Mary",no.children=3,child.ages=c(4,7,9));Lst$name[1] "Fred"$wife[1] "Mary"$no.children[1] 3$child.ages[1] 4 7 9> Lst[2]$wife[1] "Mary"> Lst[[2]][1] "Mary"> Lst[4][2]$
NULL> Lst[[4]][2][1] 7> Lst[[1:2]]Error in Lst[[1:2]] : 下标出界

注意,“列表名[下标]"或"列表名[下标范围]"的用法是合法的,但其意义与用两重括号的记法完全不同,两重记号取出列表的一个元素,结果与该元素类型相同,如果使用一重括号,则结果是列表的一个子列表,结果类型仍为列表

> Lst[["name"]][1] "Fred"> Lst[["child.ages"]][1] 4 7 9> Lst$name[1] "Fred"> Lst$wife[1] "Mary"> Lst$child.ages[1] 4 7 9

构造列表的一般格式为

Lst<-list(name_1=object_1,...,name_m=object_m)

其中name是列表元素的名称,object是列表元素的对象

2.列表的修改

> Lst$name<-"John"> Lst$income<-c(1980,1600)> Lst$name[1] "John"$wife[1] "Mary"$no.children[1] 3$child.ages[1] 4 7 9$income[1] 1980 1600

2.6.2 数据框

数据框是R的一种数据结构,它通常是矩阵形式的数据,但矩阵各列可以是不同类型的,数据框每列是一个变量,每行是一个观测

数据框有更一般的定义,他是一种特殊的列表对象,有一个值为“data.frame”的class属性,各列表成员必须是向量(数值型、字符型、逻辑型)、因子、数值型矩、列表,或其它数据框。向量、因子成员为数据框提供一个变量,如果向量非数值型会被强制转换为因子,而矩阵、列表、数据框这样的成员为新数据框提供了和其列数、成员数、变量数相同个数的变量。作为数据框变量的向量、因子或矩阵必须具有相同的长度

1.数据框的生成

> df<-data.frame(Name=c("Alice","Becka","James","Jeffrey","John"),+                Sex=c("F","F","M","M","M"),+                Age=c(13,13,12,13,12),+                Height=c(56.5,65.3,57.3,62.5,59.0),+                Weight=c(84.0,98.0,83.0,84.0,99.5));df     Name Sex Age Height Weight1   Alice   F  13   56.5   84.02   Becka   F  13   65.3   98.03   James   M  12   57.3   83.04 Jeffrey   M  13   62.5   84.05    John   M  12   59.0   99.5

如果一个列表的各个成分满足数据框成分的要求,它可以用as.data.frame()函数强制转换为数据框

> Lst<-list(Name=c("Alice","Becka","James","Jeffrey","John"),+           Sex=c("F","F","M","M","M"),+           Age=c(13,13,12,13,12),+           Height=c(56.5,65.3,57.3,62.5,59.0),+           Weight=c(84.0,98.0,83.0,84.0,99.5));Lst$Name[1] "Alice"   "Becka"   "James"   "Jeffrey" "John"   $Sex[1] "F" "F" "M" "M" "M"$Age[1] 13 13 12 13 12$Height[1] 56.5 65.3 57.3 62.5 59.0$Weight[1] 84.0 98.0 83.0 84.0 99.5> as.data.frame(Lst)     Name Sex Age Height Weight1   Alice   F  13   56.5   84.02   Becka   F  13   65.3   98.03   James   M  12   57.3   83.04 Jeffrey   M  13   62.5   84.05    John   M  12   59.0   99.5

一个矩阵可以用data.frame()转化为一个数据框,如果它原来有列名则其列名被作为数据框的变量名;否则系统自动为各矩阵的各列起一个变量名

> X<-array(1:6,c(2,3))> data.frame(X)  X1 X2 X31  1  3  52  2  4  6

2.数据框的引用

> df[1:2,3:5]  Age Height Weight1  13   56.5     842  13   65.3     98> df[["Height"]][1] 56.5 65.3 57.3 62.5 59.0> df$Weight[1] 84.0 98.0 83.0 84.0 99.5> names(df)[1] "Name"   "Sex"    "Age"    "Height" "Weight"> rownames(df)[1] "1" "2" "3" "4" "5"> rownames(df)<-c("one","two","three","four","five");df         Name Sex Age Height Weightone     Alice   F  13   56.5   84.0two     Becka   F  13   65.3   98.0three   James   M  12   57.3   83.0four  Jeffrey   M  13   62.5   84.0five     John   M  12   59.0   99.5

3.attach()函数

数据框的主要用途是保存统计建模的数据,R的统计建模功能都需要以数据框为输入数据。我们可以把数据框当成一种矩阵来处理。在使用数据框的变量 时可以用“数据框名$变量名”的记法。但是,这样使用较麻烦,R提供了attach()函数可以把数据框众的变量链接到内存中,这样便于数据框数据的调用

> r<-Height/Weight错误: 找不到对象'Height'> attach(df)> r<-Height/Weight;r[1] 0.6726190 0.6663265 0.6903614 0.7440476 0.5929648

后一语句将在当前工作空间建立一个新的变量r,它不会自动进入数据框df中,要把新变量赋值到数据框中,可以用

> df$r<-Height/Weight;df         Name Sex Age Height Weight         rone     Alice   F  13   56.5   84.0 0.6726190two     Becka   F  13   65.3   98.0 0.6663265three   James   M  12   57.3   83.0 0.6903614four  Jeffrey   M  13   62.5   84.0 0.7440476five     John   M  12   59.0   99.5 0.5929648

为了取消连接,只要调用detach()

注:R中名字空间的管理是比较独特的,它在运行时保持一个变量搜索路径表,在读取某个变量时到这个变量搜索路径表中由前向后查找,找到最前的一个;在赋值时总是在位置1赋值(除非特别指定在其它位置赋值)。attach()的缺省位置是在变量搜索路径表的位置2,detach()缺省也是去掉位置2,所以,R编程的一个常见问题是当你误用了一个自己并没有赋值的变量时有可能不出错,因为这个变量已在搜索路径中某个位置有定义,这样不利用程序的调试

2.6.3 列表与数据框的编辑

如果需要对列表或数据框中的数据进行编辑,也可以调用函数edit()进行编辑、修改,其命令格式为

xnew<-edit(xold)

其中xold是原列表或数据框,xnew是修改后的列表或数据框,注意:原数据xold并没有改动,改动的数据存放在xnew中

转载于:https://www.cnblogs.com/SweetZxl/p/chapter2-6.html

你可能感兴趣的文章
ovs处理openflow消息的流程
查看>>
精品素材:WALK & RIDE 单页网站模板下载
查看>>
大数运算
查看>>
Android开发学习笔记-SharedPreferences的用法
查看>>
php 用于绘图使用的颜色数组
查看>>
批处理命令 For循环命令具体解释!
查看>>
JSON扩展类——JsonHelper
查看>>
只有程序员了解的9个真相
查看>>
BDB (Berkeley DB)数据库简单介绍(转载)
查看>>
gpu显存(全局内存)在使用时数据对齐的问题
查看>>
开始使用 Markdown
查看>>
Apache性能优化总结
查看>>
atitit.基于虚拟机的启动器设计 --java 启动器 java生成exe
查看>>
他答对一半(打一字)asp.net开源简答题项目
查看>>
Windows系统创建符号链接文件
查看>>
GCC编译器ABI
查看>>
用python做oj上的简单题(持续更新中.......)
查看>>
ShowcaseView-master
查看>>
ODAC(V9.5.15) 学习笔记(六)TOraSQL、TOraTable和TOraStoredProc
查看>>
c++ A类包含B类指针,B类包含A类指针的情况
查看>>