统计分析与R软件-chapter2-6
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]
$<NA>
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 Weight
1 Alice F 13 56.5 84.0
2 Becka F 13 65.3 98.0
3 James M 12 57.3 83.0
4 Jeffrey M 13 62.5 84.0
5 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 Weight
1 Alice F 13 56.5 84.0
2 Becka F 13 65.3 98.0
3 James M 12 57.3 83.0
4 Jeffrey M 13 62.5 84.0
5 John M 12 59.0 99.5
一个矩阵可以用data.frame()转化为一个数据框,如果它原来有列名则其列名被作为数据框的变量名;否则系统自动为各矩阵的各列起一个变量名
> X<-array(1:6,c(2,3))
> data.frame(X)
X1 X2 X3
1 1 3 5
2 2 4 6
2.数据框的引用
> df[1:2,3:5]
Age Height Weight
1 13 56.5 84
2 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 Weight
one Alice F 13 56.5 84.0
two Becka F 13 65.3 98.0
three James M 12 57.3 83.0
four Jeffrey M 13 62.5 84.0
five 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 r
one Alice F 13 56.5 84.0 0.6726190
two Becka F 13 65.3 98.0 0.6663265
three James M 12 57.3 83.0 0.6903614
four Jeffrey M 13 62.5 84.0 0.7440476
five 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中
统计分析与R软件-chapter2-6的更多相关文章
- 统计分析与R软件-chapter2-5
2.5 多维数组和矩阵 2.5.1 生成数组或矩阵 数组有一个特征属性叫做维数向量(dim属性),维数向量是一个元素取正整数的向量,其长度是数组的维数,比如维数向量有两个元素时数组为2维数组(矩阵). ...
- 统计分析与R软件-chapter2-3
2.3 对象和它的模式与属性 R是一种基于对象的语言,R的对象包含了若干个元素作为其数据,另外还可以有一些特殊数据称为属性,并规定了一些特定操作(如打印.绘图).比如,一个向量是一个对象,一个图形也是 ...
- 统计分析与R软件-chapter2-4
2.4 因子 统计中的变量有几中重要类别:区间变量.名义变量和有序变量.区间变量取连续的数值,可以进行求和.平均值等运算.名义变量和有序变量取离散值,可以用数值代表,也可以是字符型值,其具体数值没有加 ...
- 统计分析与R软件-chapter2-2
2.2 数字.字符与向量 2.2.1 向量 1.向量的赋值 x<-c(10.4,5.6,3.1,6.4,21.7) 2.向量的运算 x<-c(-1,0,2);y<-c(3,8,2) ...
- R软件导入数据_r语言怎么导入数据_R软件导入数据
R软件导入数据_r语言怎么导入数据_R软件导入数据 R软件导入数据 1.Rcmdr安装包导入数据: 1.安装Rcmdr包,输入: install.packages("Rcmdr") ...
- R统计建模与R软件
教材目录 第一章 概率统计的基本知识 第二章 R软件的使用 第三章 数据描述性分析 第四章 参数估计 第五章 假设检验 第六章 回归分析 第七章 方差分析 第八章 应用多元分析(I) 第九章 应用多元 ...
- R软件中 文本分析安装包 Rjava 和 Rwordseg 傻瓜式安装方法四部曲
这两天,由于要做一个文本分析的内容,所以搜索了一天R语言中的可以做文本分析的加载包,但是在安装包的过程,真是被虐千百遍,总是安装不成功.特此专门写一篇博文,把整个心塞史畅快的释放一下. ------- ...
- Fragstats:使用R软件读取frag78b.asc文件
Fragstats中,有一个用于熟悉Fragstats软件的demon,在tutorial中的1种,有reg78b.asc文件,其文件内容是包含了山歌图像的行数和列数以及分辨率大小等基本信息. 采用R ...
- R语言入门学习笔记 - 对R软件的认识
一.R软件 1.安装R:自行百度☺ 2.R控制台(R Console)和R程序脚本: 打开R软件,就会直接打开控制台,控制台可以显示程序运行的结果.错误提示等信息,也可以直接输入想要执行的操作并立即返 ...
随机推荐
- 20165232 预备作业3 Linux安装及学习
java第三次预作业--Linux安装及命令入门(学习记录) 通过老师给的学习基于VirtualBox虚拟机安装Ubuntu图文教程,我在自己笔记本上安装Linux操作系统,在安装过程中我遇到一些问题 ...
- Properties读取properties配置文件
package cn.rocker.readProperties; import java.io.IOException; import java.io.InputStream; import jav ...
- SQL语法基础之DROP语句
SQL语法基础之DROP语句 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查看DROP帮助信息 mysql> ? DROP Many help items for yo ...
- my live health
s 盐城的社保咨询服务热线电话:12333 射阳县医疗保险基金中心地址:射阳县合德镇解放东路24号 电话:0515-82322433 社保办事指南:http://yancheng.bendibao.c ...
- Python中函数的嵌套及闭包
函数的嵌套 调用:在函数中调用函数 定义:在函数中定义函数 地址:函数名有内存地址,内存地址可赋值 示例 a = 1 def outer(): a = 1 def inner(): a = 2 def ...
- Netsarang
下载 https://www.netsarang.com/zh/all-downloads/ 建议直接下载 xmanager-power-suite,里面包含了 Xmanager.Xshell.Xft ...
- 3.Zuul-过滤器
1.什么是Zuul? 路由+过滤器=Zuul,核心是一系列的过滤器 2.Zuul的过滤器: pre:可以在请求被路由之前调用 route:在路由请求时候被调用 post:在route和error过滤器 ...
- gcc编译出现dlopen、dlerror、dlsym、dlcolse的解决方法
➜ test_sqlite3 gcc *.c -I . -o xixi -pthread /tmp/cckGKTrr.o: In function `unixDlOpen': sqli ...
- HDU 1018(阶乘位数 数学)
题意是求 n 的阶乘的位数. 直接求 n 的阶乘再求其位数是不行的,开始时思路很扯淡,想直接用一个数组存每个数阶乘的位数,用变量 tmp 去存 n 与 n - 1 的阶乘的最高位的数的乘积,那么 n ...
- Part-Seven
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.