大数据已被热炒多时,Map Reduce, Hadoop等也时常出现在各新闻中。R语言所说在数据分析和数据挖掘领域也有着优良的表现,于是购买了这本Richard Cotton所著的《学习R》一探究竟。
一、安装篇
笔者决定先在Windows上做一下测试,访问http://cran.r-project.org/bin/windows/base/下载安装文件。安装和在Windows上安装其它软件没有什么两样,根据书上所述执行mean(1:5)可得到1到5的算术平均值3,说明安装没有问题
如同Linux中的man命令,在R语言编辑器中可输入单个问号?(或help)来查询指定函数帮助文件,输入两个问号??(或help.search)来查找与指定关键词相关的帮助文件,对于特殊字符和带空格的关键词应使用双引号包含起来。
通过apropos可查看满足指定条件的函数或变量,apropos支持正则表达式,如查找以z结尾的变量可输入apropos(“z$”)。另外通过example()函数可查看指定函数的运行示例,如example(plot),demo()函数则可进行更长的演示,如demo(plotmath)。
二、计算篇
R语言中内置了几乎所有数学函数,sin, cos, tan, exp, log等等,看来在运算方面确实有着得天独厚的优势。学到这突然感觉我的数学能力有些捉襟见肘了,大学四年毕业快十年(一不小心暴露了年龄:-)),加减乘除到是没忘,log,矩阵啥的都是依稀仿佛…当初一直都在怀疑当初学数学有什么用,感情为大数据时代做准备呢!
R语言中求幂2 ^ 3和 2 ** 3是等价的,同时由于存在舍入误差(rounding error),在进行比较时不建议使用 ==(比如 sqrt(2) ^2 == 2返回的值是FALSE),而应使用all.equal(all.equal(sqrt(2)^2,2)将返回True)。
R语言的变量赋值可选择类似其它语言中的=,也可以使用<-,由于历史原因,后者是首选。另外不同于JAVA等一些语言,R是不需要提前声明变量类型的。对全局变量赋值使用<<-,另外assign函数也可用于对变量赋值。
三、变量的类
可通过class来查看类,R语言的数值变量有浮点值numeric、整数integer、复数complex。
> class(sqrt(1:10)) [1] "numeric" > class(3+1i) [1] "complex" > class(1) [1] "numeric" > class(1L) [1] "integer" > class(1:5) [1] "integer" > class(c(TRUE,FALSE)) [1] "logical"
数值类以外还有逻辑类logical,存储文本的字符character,存储类别数据的因子factor,不常见的二进制数据的原始值raw
> class(c("she","seashells","shore")) [1] "character" > (gender <- factor(c("male", "female", "female", "male", "female"))) [1] male female female male female Levels: female male > levels(gender) [1] "female" "male" > as.integer(gender) [1] 2 1 1 2 1
通过is.numeric,is.logical,is.list等可以判判断变量是否属于某一类。
四、变量输出篇
print(), summary(), sample(), data.frame(), str(), unclass(), View(), edit(), fix()
这些函数第一次学习可以按照书上的进行实操,但并未领会到精髓,留待复习时补充。
通过rm()函数可删除工作区中的变量,rm(list-ls())可删除所有变量。
创建数组使用array(),创建矩阵使用matrix()
> (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") + ) + )) , , un ein zwei drei one 1 5 9 two 2 6 10 three 3 7 11 four 4 8 12 , , deux ein 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, + dimnames = list( + c("one","two","three","four"), + c("ein","zwei","drei") + ) + )) ein zwei drei one 1 5 9 two 2 6 10 three 3 7 11 four 4 8 12