《学习R》笔记:科学计算器、检查变量和工作区、向量、矩阵和数组、列表和数据框...
一、第二章 科学计算器
要检查两个数字是否一样,要使用 all.equal() ,不要使用 == ,== 符号仅用于比较两个整型数是否存在相同 。
> all.equal(sqrt(2)^2,2) [1] TRUE > all.equal(sqrt(2) ^ 2,3) [1] "Mean relative difference: 0.5" > isTRUE(all.equal(sqrt(2) ^ 2,2)) [1] TRUE > isTRUE(all.equal(sqrt(2) ^ 2,3)) [1] FALSE
二、第三章 检查变量和工作区
变量的类:逻辑类(logical)、三个数值的类(numeric、complex、integer)、用于存储文本的字符character、存储类别数据的因子factor,以及较罕见的存储二进制数据的原始值raw
factor因子,存储类别数据
> gender = factor(c("male","female","male","female")) > gender [1] male female male female Levels: female male > levels(gender) [1] "female" "male" > nlevels(gender) [1] 2
在底层,因子的值被存储为整数,而非字符。可以通过调用 as.integer() 清楚的看到
> as.integer(gender) [1] 2 1 2 1
事实证明,采用整数而非字符文本的存储方式,令内存的使用非常高效
> gender_char = sample(c("female","male"),1000,replace = TRUE) > gender_char ......> gender_fac = as.factor(gender_char) > #把数据的类型转换为因子型 > object.size(gender_char)#object.size()函数返回对象的内存大小 8160 bytes > object.size(gender_fac) 4560 bytes
把因子转换为字符串
> as.character(gender) [1] "male" "female" "male" "female"
改变一个对象的类型(转型casting)
> x = "123.456" #使用as*函数改变x的类型 > as.numeric(x) #as(x,"numeric") [1] 123.456 > is.numeric(x) [1] FALSE
代码 options(digits = n) 设置全局变量确定打印数字的小数点位数。
> options(digits = 10) > (x = runif(5)) [1] 0.040052175522 0.544388080016 0.506369658280 [4] 0.144690239336 0.005838404642
runif 函数将生成30个均匀分布于0和1之间的随机数,summary 函数就不同的数据类型提供汇总信息,例如对数值变量:
> num = runif(30) > summary(num)Min. 1st Qu. Median Mean 0.001235794 0.199856233 0.475356185 0.475318138 3rd Qu. Max. 0.703412558 0.984893506
letters、LETTERS 是两个内置的常数
> letters[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" [13] "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" [25] "y" "z" > LETTERS[1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" [13] "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" [25] "Y" "Z"
sample 函数为抽样函数,它的格式为:sample( x , size= , replace= ) 第三个参数的缺省值是F ,表示进行的是无放回抽样。
对a~e重复随机抽样30次:
> fac = factor(sample(letters[1:5],size = 30,replace = T)) > summary(fac)a b c d e 4 7 2 5 12
> bool = sample(c(TRUE,FALSE,NA),30,replace = TRUE) > summary(bool)Mode FALSE TRUE NA's logical 10 8 12
创建数据框dfr ,这里只显示他的前几行
> dfr = data.frame(num,fac,bool) > head(dfr) #默认显示前6行num fac bool 1 0.34019507235 b NA 2 0.77415443189 e TRUE 3 0.02201034524 d TRUE 4 0.11190012516 e NA 5 0.18030911358 a NA 6 0.98489350639 d TRUE
> summary(dfr)num fac bool Min. :0.001235794 a: 4 Mode :logical 1st Qu.:0.199856233 b: 7 FALSE:10 Median :0.475356185 c: 2 TRUE :8 Mean :0.475318138 d: 5 NA's :12 3rd Qu.:0.703412558 e:12 Max. :0.984893506
str 函数能显示对象的结构。对向量来说,它并非很有趣(因为它们太简单了),但 str 对数据框和嵌套列表非常有用:
> str(num)num [1:30] 0.34 0.774 0.022 0.112 0.18 ... > str(dfr) 'data.frame': 30 obs. of 3 variables:$ num : num 0.34 0.774 0.022 0.112 0.18 ...$ fac : Factor w/ 5 levels "a","b","c","d",..: 2 5 4 5 1 4 1 4 1 5 ...$ bool: logi NA TRUE TRUE NA NA TRUE ...
每个类都有自己的打印(print)方法,以此控制如何显示到控制台。又是,这种打印模糊了其内部结构,或忽略了一些有用的信息。用unclass函数可绕开这一点,显示变量是如何构建的。例如,对因子调用 unclass 函数会显示它仅是一个整数(integer) 向量,拥有一个叫 levels 的属性:
unclass(fac) [1] 2 1 4 3 attr(,"levels") [1] "cat" "dog" "goldfish" "hamster"
attributes 函数能显示当前对象的所有属性列表:
> attributes(fac) $levels [1] "cat" "dog" "goldfish" "hamster" $class [1] "factor"
view 函数会把数据框显示为电子表格。edit 和 fix 与其相似,不过它们允许手动更改数据值。
View(dfr) #不允许更改 new_dfr = edit(dfr) #更改将保存于new_dfr fix(dfr) #更改将保存于dfr
View(head(dfr,50)) #查看前50行
三、第四章 向量、矩阵和数组
数组能存放多维矩形数据。矩阵是二维数组的特例。
有很多创建序列的方法,seq创建的优点是可设置步长。
> (xulie = seq(1,15,2)) [1] 1 3 5 7 9 11 13 15
length() 函数查询序列的长度:
> length(xulie) [1] 8
向量的命名:
> c(apple = 1,banana = 2,"kiwi fruit" = 3, 4)apple banana kiwi fruit 1 2 3 4 > x = 1:4 > names(x) = c("apple" ,"banana" ,"kiwi fruit","") > xapple banana kiwi fruit 1 2 3 4
数组的创建:
> three_d_array = array( #三维数组 + 1:24, + dim = c(4,3,2), + dimnames = list( + c("one","two","three","four"), + c("ein","zwei","drei"), + c("un","deux") + ) + ) > three_d_array , , unein zwei drei one 1 5 9 two 2 6 10 three 3 7 11 four 4 8 12, , deuxein zwei drei one 13 17 21 two 14 18 22 three 15 19 23 four 16 20 24
> (a_matrix = matrix( #创建矩阵 + 1:12, + nrow = 4,byrow = T, + dimnames = list( + c("one","two","three","four"), + c("ein","zwei","drei") + ) + ))ein zwei drei one 1 2 3 two 4 5 6 three 7 8 9 four 10 11 12
一些函数:
> x = (1:5) ^ 2 > x [1] 1 4 9 16 25 > x[c(1,3,5)] [1] 1 9 25 > x[c(-2,-4)] [1] 1 9 25 > x[c(TRUE,F,T,F,T)] [1] 1 9 25 > names(x) = c("one","four","nine","sixteen","twenty five") > xone four nine sixteen twenty five 1 4 9 16 25 > which(x > 10)sixteen twenty five 4 5 > which.min(x) one 1 > which.max(x) twenty five 5 >
> rep(1:5 , 3)[1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 > rep(1:5 , each = 3)[1] 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 > rep(1:5 , times = 1:5)[1] 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 > rep(1:5 , length.out = 7) [1] 1 2 3 4 5 1 2
> rep.int(1:5 , 3)[1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 > rep_len(1:5 , 13)[1] 1 2 3 4 5 1 2 3 4 5 1 2 3
> dim(three_d_array) [1] 4 3 2 > dim(a_matrix) [1] 4 3 > nrow(a_matrix) [1] 4 > ncol(a_matrix) [1] 3
第五章 列表和数据框
#创建一个列表> (main_list = list( + element_in_main_list = log10(1:10), + middle_list = list( + element_in_middle_list = diag(3), + inner_list = list( + element_in_inner_list = pi ^ 1:4, + another_element_in_inner_list = "a" + ) + ) + )) $element_in_main_list[1] 0.0000000 0.3010300 0.4771213 0.6020600 0.6989700 0.7781513[7] 0.8450980 0.9030900 0.9542425 1.0000000$middle_list $middle_list$element_in_middle_list[,1] [,2] [,3] [1,] 1 0 0 [2,] 0 1 0 [3,] 0 0 1$middle_list$inner_list $middle_list$inner_list$element_in_inner_list [1] 3.141593$middle_list$inner_list$another_element_in_inner_list [1] "a"
对列表进行查询
(uk_bank_holidays_2013 <-list(Jan = "New Year's Day",Feb = NULL,Mar = "Good Friday",Apr = "Easter Monday",May = c("Early May Bank Holiday","Spring Bank Holiday"),Jun = NULL,Jul = NULL,Aug = "Summer Bank Holiday",Sep = NULL,Oct = NULL,Nov = NULL,Dec = c("Chrismas Day","Boxing Day") )) #假如创建列表时并没有给各元素命名,可在最后利用names()对列表命名。names(uk_bank_holidays_2013) = month.abb;
> uk_bank_holidays_2013["Jan"] #各种查询方式 $Jan [1] "New Year's Day"> uk_bank_holidays_2013[["Jan"]] [1] "New Year's Day" > uk_bank_holidays_2013$Jan [1] "New Year's Day" > uk_bank_holidays_2013[1] $Jan [1] "New Year's Day"> uk_bank_holidays_2013[[1]] [1] "New Year's Day"
> uk_bank_holidays_2013[[c(5,2)]] #各种查询方式 [1] "Spring Bank Holiday" > uk_bank_holidays_2013[[5]][[2]] [1] "Spring Bank Holiday" > uk_bank_holidays_2013$May [1] "Early May Bank Holiday" "Spring Bank Holiday" > uk_bank_holidays_2013$May[2] [1] "Spring Bank Holiday"
> uk_bank_holidays_2013$Jan = NULL #删去元素操作 > uk_bank_holidays_2013$Feb = NULL > uk_bank_holidays_2013["Aug"] = list(NULL) #将元素设置为NULL值 > uk_bank_holidays_2013 $Mar [1] "Good Friday"$Apr [1] "Easter Monday"$May [1] "Early May Bank Holiday" "Spring Bank Holiday" $Jun NULL$Jul NULL$Aug NULL$Sep NULL$Oct NULL$Nov NULL$Dec [1] "Chrismas Day" "Boxing Day"
创建数据框:
> (a_data_frame = data.frame( #创建一个数据框 + x = letters[1:5], + y = rnorm(5), + z = runif(5) > 0.5+ row.names = NULL #如果输入的任何变量有名称,那么行名称就取自第一 + )) #个向量名称,该语句可将此规则覆盖掉x y z 1 a 0.3067414 FALSE 2 b -2.4637065 TRUE 3 c 0.8443321 TRUE 4 d -0.0163287 TRUE 5 e 0.8291859 TRUE
注意,每列的类型可与其他列不同,但在同一列中的元素类型必须相同。还要注意的是,对象的类名是 data.frame ,中间有一个点,而非空字符。
第五章介绍了列表与数据框,操作数据框是一个很大的话题,13章会讨论。
转载于:https://www.cnblogs.com/jiaxinwei/p/11483133.html
《学习R》笔记:科学计算器、检查变量和工作区、向量、矩阵和数组、列表和数据框...相关推荐
- 如何检查变量是否是JavaScript中的数组? [重复]
本文翻译自:How do you check if a variable is an array in JavaScript? [duplicate] This question already ha ...
- R语音--(5)--列表与数据框
列表 构造列表 list 列表是一种特别的对象集合,它的元素也是由序号(下标)区分,但是各元素的类型可以是任意对象,不同元素不必是同一类型. 元素本身允许是其它复杂数据类型,比如,列表的一个元素允许是 ...
- R语言笔记1:数据类型(向量、数组、矩阵、 列表和数据框)
宏基因组按:科研中数据分析解读占用了我们太多时间,学习R语言是生物测序领域数据(reads count表)分析及可视化的首选.举个例子,扩增子分析从fastq到OTU表至多是de novo或refer ...
- r语言提取列名_R语言基础(2)向量|矩阵|数组|数据框|数据IO|实用函数
"pythonic生物人"的第85篇分享. 本文梳理R语言数据结构:向量.矩阵.数据框: 数据IO及实用函数. 本文速览
- scala学习复习笔记超详细(变量)
文章目录 Scala变量 1. 变量的快速入门 变量的使用说明: 程序中 + 的使用: 2. Scala数据类型 Scala 数据类型体系一览图 Scala数据类型列表 整数类型 浮点类型 字符类型 ...
- python 入门学习教程笔记-- BMR 计算器
本讲内容涉及到的知识点有: 1.数值类型: 2.字符串分割,字符串格式化输出,使用{}占位 https://docs.python.org/3/library/stdtypes.html#str.sp ...
- 对比《学习R》PDF代码+《R语言实战第2版》PDF代码+《R数据科学》PDF代码分析
R语言是世界上最流行的用于数据处理和统计分析的脚本语言.考古学家用它来跟踪古代文明的传播,医药公司用它来探索哪种药物更安全.更有效,精算师用它评估金融风险以保证市场的平稳运行.总之,在大数据时代,统计 ...
- R语言笔记8:两个重要函数——用来分解数据框的split和用来查看对象的str
R语言基础系列: 你知道R中的赋值符号箭头(<-)和等号(=)的区别吗? 1数据类型(向量.数组.矩阵. 列表和数据框) 2读写数据所需的主要函数.与外部环境交互 3数据筛选--提取对象的子集 ...
- 【R笔记】R语言函数总结
R语言与数据挖掘:公式:数据:方法 R语言特征 对大小写敏感 通常,数字,字母,. 和 _都是允许的(在一些国家还包括重音字母).不过,一个命名必须以 . 或者字母开头,并且如果以 . 开头,第二个字 ...
最新文章
- java项目新东方在线源码_基于JSP的在线考试系统-JavaWeb项目-有源码
- 凭证 90000000 保存(帐户确定出错)
- MySQL 行转列的方法
- 【Ubuntu16.04-opencv3.4.0-FDDB Evaluation】评测代码使用中遇到对‘cvxxx’未定义的引用问题
- 在Java 7或更早版本中使用Java 8 Lambda表达式
- 理论基础 —— 队列 —— 链队列
- linux网络代码结构
- 单点登录实现机制:web-sso
- 视频教程| Egret 打包Android/iOS 原生游戏
- 广告渠道投放效果评估分析
- cad卸载工具_「Windows」不足10M的卸载软件,卸载得可真干净啊
- opencv (五十四)ORB特征点
- android 模拟器su,修改Android模拟器的system分区,以及加入SuperSU
- 固态硬盘的坏块管理,你知道和不知道的
- 计算机二级考试失误有提示吗,2016年计算机二级考试应该避免的失误
- 疫情家庭常见消毒剂:次氯酸、次氯酸钠、酒精、对间氯二甲苯酚 、西吡氯铵、 二氧化氯;消炎药与抗生素
- Python批量word2pdf、ppt2pdf
- JS之splice和slice函数
- 我的世界1.12.2 神奇宝贝(精灵宝可梦) 开服教程
- 职称计算机windows 7,2017高会《职称计算机》模块精讲:Windows7的启动和退出
热门文章
- emui消息推送服务器,别再抱怨,这次或许真的轮到你了,EMUI9.1推送进度再次更新...
- 【2019牛客暑期多校训练营(第二场) - H】Second Large Rectangle(单调栈,全1子矩阵变形)
- 【POJ - 2486】Apple Tree (树形背包,dp)
- android shape 圆角百分比,Android shape显示圆角问题
- html表情选择器,原生JS写的emoji表情选择器
- matlab pca和逆pca函数,matlab_PCA,训练集与测试集分开,原理和用法
- idea 升级到2020后 无法启动_升级iOS 14尝鲜后,无法降级 iOS13.5.1?
- php min命令,php min函数怎么用?
- java中select的用法_mybaties中select用法,以及常用增删改查
- 超硬核!数据库学霸笔记,考试/面试随便秒杀