Alan Hou的个人博客

学习R读书笔记

大数据已被热炒多时,Map Reduce, Hadoop等也时常出现在各新闻中。R语言所说在数据分析和数据挖掘领域也有着优良的表现,于是购买了这本Richard Cotton所著的《学习R》一探究竟。

学习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

 

退出移动版