`

【转】闲人博上介绍R语言的一篇好文章

阅读更多
1 R的下载、安转

R有很多的版本,支持目前主流的操作系统MAC、Linux和WINDOWS系列。因为我个人是在WINDOWS下用R的,所以在这里将只介绍WINDOWS下R的下载&安装。

下载R:

你可以从世界各地很多网站上下载到R,官方的中国下载点是:
http://www.lmbe.seu.edu.cn/CRAN/bin/windows/base/

在我写这篇文章的时候,最新的版本是R-2.2.1版。
在网络上有一篇被翻译过来的R入门教材,可以在这里找到 :R 導論(入門)

安装R:

1,双击R-2.2.1-win32.exe文件,进入安装画面。
2,在Welcome to the R for Windows Setup Wizard的画面中,单击NEXT。
3,在License Agreement的画面中,选择[I accept the agreement],然后单击NEXT。
4,在Select Destination Location的画面中,可以自行设定安装目录,默认为:[C:\Program Files\R\R-2.2.1],单击NEXT。
5,在接下来的过程中一律选则NEXT安装即可。





2 简单的数学计算、数学函数以及如何编辑R程序

1,用R进行简单的计算:

我们可以用R进行以下各类运算。

加法      +
减法      -
乘法      *
除法      /
幂运算   ^
整数商   %/%
余数      %%
例如:
输入:   (1 + 2 - 3 * 4) / 5^6
结果:   [1] -0.000576

2,R中还有很多的数学函数可以使用,比如说开方函数、对数函数等等。

例如:
输入:   sqrt(2)
结果:[1] 1.414213

你还可以使用多个函数进行计算。例如:
输入:   sqrt(100) + round(100) / log10(100)
结果:[1] 60 下面介绍的是R中可以使用的数学函数。

sqrt : 开平方函数
abs  : 绝对值函数
exp  : 2.71828…
expm1  : 当x的绝对值比1小很多的时候,它将能更加正确的计算exp(x)-1
log  : 对数函数
log10  : 对数(底为10)函数
log2  : 对数(底为2)函数
sin  : 正弦函数
cos  : 余弦函数
tan  :  正切函数
asin  :  反正弦函数
acos  :  反余弦函数
atan  :  反正切函数
sinh  :  超越正弦函数
cosh  :  超越余弦函数
tanh  :  超越正切函数
asinh  :  反超越正弦函数
acosh  :  反超越余弦函数
atanh  :  反超越正切函数
logb  :  和log函数一样
log1px  :  当x的绝对值比1小很多的时候,它将能更加正确的计算log(1+x)
gamma  :  Γ函数(伽玛函数)
lgamma  :  等同于log(gamma(x))
ceiling  :  返回大于或等于所给数字表达式的最小整数
floor  :  返回小于或等于所 给数字表达式的最大整数
trunc  :  截取整数部分
round  :  四舍五入
signif(x,a)  :  数据截取函数 x:有效位 a:到a位为止
3,R程序的输入/编辑

你可以直接在R的环境里输入R命令执行计算,也可以用任何一款文本编辑器进行编程。R程序的默认文件名后缀是[ .R ]。
4,环境设置函数options()

用options()命令可以设置一些环境变量。

比如说:

options(digits=10)
这个命令,可以把R的整数表示能力设为10位。

options(warn=-1)
这个命令,可以忽视任何警告。(warn=1时,为不放过任何警告)
……

使用help(options)可以查看详细的参数信息。


RWEKA:

WEKA是一个JAVA写的数据挖掘的工具,RWEKA则是在R中调用WEKA的一个界面。

扩展包说明&下载地址(英文):http://cran.r-project.org/src/contrib/Descriptions/RWeka.html


3、R的数据类型

R中包含以下的基本数据类型。

空值(NULL)
意义  :该对象里什么都没有(甚至连0也没有)

欠损值、不定值(NA),非数(NaN),无限大(Inf)
意义  :NA:表示数据缺损;NaN:表示用数字无法表示;Inf:无限大

复数(complex)
意义  :复数

字符串(character)
意义  :不是单一的字符,而是用双/单引号括起来的字符

逻辑值(logical)
意义  :T表示真,F表示假


4_关于R的一些基本知识


首先看一下这一次要讲的内容。

在用R进行数据分析和计算的时候,将会用到很多变量、函数、数组等等。而对象则是对所有这些变量、函数、数组等的总称。比如说,下面这个式子:x <- 2通常我们会说,x是一个变量,我们通过赋值运算把它的值设为2。但是在R里,不论我们是给一个变量赋值也好,还是对一个数组进行初始化也好,我们统统把它称为[对象]。 

什么是对象(Object)
如何改变工作目录
关于扩展包(库函数)
R的数据类型
环境设置函数options()
接下来,我们一个一个的简单介绍。

1,什么是对象(Object)

在用R进行数据分析和计算的时候,将会用到很多变量、函数、数组等等。而对象则是对所有这些变量、函数、数组等的总称。
比如说,下面这个式子:
x <- 2



下面的对象是R的预设对象。我们在命名自己的对象时,是不能与下面这些对象重名的。

break
else
for
function
if
TRUE
in
next
repeat
return
while
FALSE

另外:
使用objects()函数,还可以查看目前存在的对象名。
使用rm()函数,可以消除自己所定义过的对象。( 例如: rm(killme) )
使用rm(list=ls(all=TRUE))命令,可以消除自己所定义过的所有的对象。
命名对象时,要注意大小写。(例如:x和X是两个不同的对象)

2、如何改变工作目录

你可以用getwd()命令来查看当前目录,也可以用类似setwd(”c:/usr”)的命令来更改当前的目录。

你还可以用dir()命令来查看当前目录里的文件。(好像回到了dos时代…呵呵)

3、关于扩展包(库函数)

R有很好的扩展性能,默认下R自带了以下的扩展包。

base:R的基本扩展包
boot:R的启动函数库
class:Classification的函数库
cluster:进行聚类分析计算的函数库
foreign:读取其它的统计软件(如:SAS…)等生成的文件的函数库
grid:grid图像函数库
KernSmooth:进行核函数密度估计运算的函数库
lattice:lattice图像函数库
MASS:在『Modern Applied Statistics with S』中出现的数据与函数库
methods:定义了在R中用于对象的各种方法、类、程序以及工具。
mgcv:GCV和一般加法模型GAM(generalized additive model)的函数库
nlme:线性混合效果模型和非线性混合效果模型的函数库
nnet:
rpart:使用了再归算法的分类和回归树的函数库
spatial:
splines:splines回归的函数库
stats:R的统计函数库
stats4:S4类的统计函数库
survival:
tcltk:Tcl/Tk的接口函数库
tools:用于扩展包开发和管理的函数库
utils:

另外:
使用library(help=”扩展包名”)命令可以查看该扩展包的详细信息
使用library(扩展包名)命令可以使用该扩展包
使用search()命令可以查看现在已经读取的扩展包
使用detach(”package:扩展包名”)命令可以卸载某个扩展包
使用data()命令可以查看当前可使用的数据对象
使用data(package = “扩展包名”)命令可以查看在该扩展包中的数据对象

扩展包的安装:
使用下面的命令,可以联网安装扩展包。
options(CRAN=”http://cran.r-project.org”)
install.packages(”扩展包名”)

如果你已经下载了扩展包的ZIP压缩文件,你可以用下面的命令指定路径安装扩展包。
install.packages(”路径名/文件名.zip”, contriburl = NULL)
例如:install.packages(”c:/adapt_1.0-4.zip”, contriburl = NULL)

当然,你也可以通过菜单操作下载和安装扩展包,请自己研究。


5_用R进行基本的统计计算


今天简单的讲一下如何用R进行基本的统计计算。

定义:
数据有很多种分类方法,在这里,为了方便理解,暂时把年龄、身高、体重等用数字表示的数据叫做数量型数据;相对的,把血型、性别、职称等用文字叙述的数据叫做质量型数据。

在这里所说的基本的统计计算,是指对各类数量型数据进行求和、平均、求最大值最小值等等的计算。

●和与百分比

A:和

在对数量型数据进行分析计算时,求和是经常会使用到的。

比如说,有五位同学,他们的身高分别是:
1.75米 、 1.82米 、 1.78米 、 1.93米 、 1.77米
求他们的身高的总和。

和 = 1.75+1.82+1.78+1.93+1.77 = 9.05米

用R进行求和计算时,你可以按照下面的方式进行计算

> 1.75+1.82+1.78+1.93+1.77
[1] 9.05

也可以利用R本身的sum()函数,这样的话,会更加便捷。

> shengao <- c(1.75,1.82,1.78,1.93,1.77)
> sum(shengao)
[1] 9.05

B:百分比

还是刚才那5位同学,他们的体重分别是:
69公斤 , 80公斤 , 78公斤 , 96公斤 , 65公斤
他们的总体重为:
> tizhong <- c(69,80,78,96,65)
> sum(tizhong)
[1] 388

388公斤。

那么,第一位同学占总体重的多少呢?

按比例计算:
> tizhong/sum(tizhong)
[1] 0.1778351 0.2061856 0.2010309 0.2474227 0.1675258


按百分比计算:
> 100*(tizhong/sum(tizhong))
[1] 17.78351 20.61856 20.10309 24.74227 16.75258


使用扩展包sca中的percent函数,可以用带%符号的表示方式显示结果。
> library(sca)
> percent(tizhong/sum(tizhong))
[1] “18 %” “21 %” “20 %” “25 %” “17 %”


还可以用参数d来指定小数点后的表示位数。在不指定的情况下,小数点后的数字不表示。
> percent(tizhong/sum(tizhong),d=1)
[1] “17.8 %” “20.6 %” “20.1 %” “24.7 %” “16.8 %”


如果不想结果被双引号包围,可以用noquote命令
> noquote(percent(tizhong/sum(tizhong),d=1))
[1] 17.8 % 20.6 % 20.1 % 24.7 % 16.8 %


●表示中心的统计量
表示数据中心位置的统计量有很多种,最基本的有:平均值、最频值。

A:平均值

上面那五位同学的年龄分别为:
19岁 、 21岁 、 20岁 、 26岁 、 17岁
在求这五位同学的年龄的平均值时,可以用下面这种方法:
> (19+21+20+26+17)/5
[1] 20.6


也可以用R自带的mean()函数:
> nianling <- c(19,21,20,26,17)
> mean(nianling)
[1] 20.6

B:最频值

在数据中最频繁出现的数值叫做最频值。

我们先用其他的函数来间接的求最频值。
例如:我们在求下面这组数据的最频值时,可以使用table函数。
1 , 7 , 3 , 7 , 8 , 23 , 5 , 7 , 9 , 3 , 4
> table(c(1 , 7 , 3 , 7 , 8 , 23 , 5 , 7 , 9 , 3 , 4))
 1  3  4  5  7  8  9 23
 1  2  1  1  3  1  1  1

从返回的结果中我们可以清楚地看到,在数据中 “7” 出现了3次,因此 “7” 为该组数据的最频值。

接着,我们直接用函数median()来求最频值。
> median(c(1 , 7 , 3 , 7 , 8 , 23 , 5 , 7 , 9 , 3 , 4))
[1] 7


●表示分散的统计量
表示数据中心的统计量虽然很重要,但是表示数据四周的分散信息的统计量也十分的重要。

A:最大值、最小值和范围

我们用tizhong数据,分别计算五位同学体重的最大值、最小值和体重的分布范围。

最大值
> max(tizhong)
[/1] 96
最小值
> min(tizhong)
[1] 65

范围
> range(tizhong)
[1] 65 96


B:方差和标准偏差(variance AND standard deviation)

在R中,有很方便的求方差和标准偏差的函数var()和sd()。

例如在求tizhong数据的方差和标准偏差时,可以如下计算。
方差:
> var(tizhong)
[1] 144.3

标准偏差:
> sd(tizhong)
[1] 12.01249

C:四分位数

四分位数是指把样本数据按从小到大的顺序等分成四份,各等分点上的数即为四分位数。
例如:数据

3(0%点)  5  6(25%点)  8  9(50%点)  11  12(75%点)  15  16(100%点)

25%点的6和75点的12分别称为下四分位数和上四分位数。

上四分位数与下四分数之差叫做四分位间距。

在R中我们可以用quantile()函数和IQR()函数来求四分位数和四分位间距。
> sifenshu <- c(3,5,6,8,9,11,12,15,16)
> quantile(sifenshu)
  0%  25%  50%  75% 100%
   3    6    9   12   16
> IQR(sifenshu)
[1] 6



今天简单介绍了一下如何用R对一些基本的统计量进行计算,如果有其它的要求的,欢迎提出来,我会进一步介绍的。今天就先到这里了,呵呵。


6_R的函数

R中有很多的标准自带的函数,也有很多的由扩展包支持的函数。今天我们主要看一看R中标准自带的函数。

首先简单定义一下什么是函数:

在R中,所谓函数实际上就是一系列程序的组合。

为了能够更深刻的理解这句话,我将在下面这个例子中先一步一步的计算几个数的平均值;再讲如何把这些可以重复利用的运算步骤改写成为自己服务的函数;最后,我们再看一下R中已经为我们准备好了的求平均值的函数的用法:

1,一段程序
我们用R计算下面这5个数的和
23  34  56  78  89
在R中,我们刚开始可能会这样写:

>x <- c( 23, 34, 56, 78, 89 )
>z <- 0
>for( i in 1:5 ){
>z <- z + x[i]
>}
>z <- z/5
>z
[1]56

经过我们一步一步的计算,得到了最后的结果56。

但如果每次遇到类似这样的求平均的运算,我们都这样的用手去一步一步的输入的话,好像很麻烦,呵呵,还好,R可以帮助我们这些懒人,用函数的方式来解决这个问题。

2,一段程序变函数
我们所想要的是,只要输入数据就可以自动的帮我们算出平均值的结果。下面我们来看看怎样在R中写一个自己的函数。

> mymean <- function(x){
+ y <- 0
+ for(i in 1:length(x)){
+ y <- y+ x[i]
+ }
+ y <- y/length(x)
+ }


现在,属于我们自己的求平均函数mymean()就完成了,我们可以用下面这段程序来检查一下看有没有什么错误。

>x <- c( 23, 34, 56, 78, 89 )
>y <- mymean(x)
>y
[1]56


呵呵,结果一致。 我们以后就可以用这个自己制作的函数来计算其他的各种求平均运算了。

3,利用R自带的函数
其实像求平均、求和、最大值、最小值甚至自然指数、平方根等运算在R中都已经有自带的函数。比如R中自带的求平均函数:mean()

>x <- c( 23, 34, 56, 78, 89 )
>y <- mean(x)
>y
[1]56


使用方法和我们自己写的函数的使用方法是一样的。

好,我们到现在为止就大概的看了看函数的定义,如何制作自己的函数以及如何使用R中自带的函数。

接下来,我就把R中自带的函数列一个简表,以方便大家查询。(这里并不是全部,只是个人认为比较常用的,希望对初学者有所帮助。……也许以后会慢慢更新、补全,呵呵……)

基本统计量:

mean
求平均值

max
求最大值

min
求最小值

range
求范围(最大值-最小值)

median
求中央值

var
求分散


数据操作:

matrix
建立行列式

list
建立列表

is.*****

****是数据的类型名
例如:
is.matrix(x)语句的意思是问R:“x是不是行列式?”。
如果x是行列式的话R将返回”TRUE”,如果不是R将返回”FALSE”

as.****
****是数据的类型名
as.matrix(x)的作用是不管x以前是什么类型的,R都要用这条语句来把x转换成行列式。

nrow
返回对象的行数:nrow(x)

ncol
返回对象的列数:ncol(x)

length
返回对象的长度

colnames
返回列名

rownames
返回行名


简单计算:

abs
计算绝对值
abs(-2)

exp
求自然指数
exp(1)=2.7182…

sqrt
求平方根
sort(4)

log
求自然对数
log(exp(1))=1

log10
常用对数
log10(10)=1

cos,sin,tan
三角函数

acos,asin,atan
逆三角函数

round
四舍五入
round(3.1415 , 3)= 3.142





关于R的一些网站:

中文:.
中国统计论坛 - R语言与SPLUS: http://www.8sta.com/bbs/Archive_index.asp?BoardID=38&BoardType=R语言与SPLUS

英文:
R Project(R的官方网站):http://www.r-project.org/

日文:
日本的R大本营:http://www.okada.jp.org/RWiki/
R-TIPS(日文教程):http://cse.naro.affrc.go.jp/takezawa/r-tips/r2.html
用R进行统计处理:http://aoki2.si.gunma-u.ac.jp/R/

分享到:
评论
2 楼 ryusukekenji 2009-07-15  
请问您知道 getOption(”verbose”)是做什么用的呢?我刚学R语言,遇到一些问题,请问可以得知您的email 吗?有一些问题想请教您….
1 楼 eyejava 2009-02-04  
已然找不到原创作者在哪了 ...
一个稳定的博客服务器也是对知识的一种保护

相关推荐

    闲人吧资源搜索神器 8.2破解版

    闲人吧资源搜索神器是闲人吧神器,屌丝们看片搜片第一选择。闲人吧资源搜索神器可以搜索种子、资源、专辑封面并提供下载,还可以直播电视、云点播。 可以直播电视、云点播

    闲人Flash播放器

    闲人Flash播放器是一款专为用户设计的Flash内容播放软件,尤其在Adobe公司宣布停止对Flash Player支持后,这类播放器变得更为重要。Flash技术曾是互联网上动态内容和交互式应用的重要载体,广泛用于游戏、动画以及...

    闲人笔记1:HelloServlet

    【HelloServlet】是一个初学者常接触的Java Web编程示例,它主要用于介绍如何创建和运行一个简单的Servlet。Servlet是Java编程语言中用于扩展服务器功能的Java类,它们可以在Web服务器上运行,处理客户端请求并返回...

    闲人桌面正式版

    【闲人桌面正式版】是一款桌面管理软件,其核心特性在于支持无限多的二级分类功能。这使得用户在整理电脑桌面上的各种文件、快捷方式、图标时,能够更加有序、高效地进行。对于那些需要频繁处理大量文件和信息的用户...

    闲人概念网志程序(Blog ET.Free) v1.0

    **闲人概念网志程序(Blog ET.Free) v1.0**是一款开源的博客系统,专为个人或小团队提供在线日志发布和管理服务。它具有轻量级、易用性和灵活性的特点,使得用户可以方便地搭建属于自己的个性化博客平台。 ### 一、...

    闲人 强大IP代理获取 V1.0

    闲人 强大IP代理获取 V1.0

    闲人桌面免费版(Desktop ET.Free) v1.0

    "闲人桌面免费版(Desktop ET.Free) v1.0"是一款专为用户打造的个性化桌面软件,旨在提升用户的电脑使用体验。这款软件的核心功能包括但不限于以下几点: 1. **主题定制**:允许用户根据个人喜好自定义桌面背景,...

    如何促进对“闲人”的深度学习——重教《记承天寺夜游》.pdf

    首先,文章标题中的“闲人”指的是苏轼《记承天寺夜游》中的主体思想和意境,这个概念并非表面上的闲散之人,而是有着深层次的文化内涵和作者的个人情感。通过重新教授《记承天寺夜游》这篇课文,教师刘自歆和邢俊...

    初中语文文摘生活闲人

    牛顿的苹果故事就是一个很好的例子,他在悠闲的时刻得到了关于重力的启示,开创了物理学的新纪元。这表明,闲暇不仅仅是休息,更是一种思维的发酵过程,可以孕育出伟大的发现和创新。 对于那些被称为“闲人”的文人...

    闲人送饭系统

    "闲人送饭系统"是一个基于Web的程序设计项目,主要使用了JSP(JavaServer Pages)技术,结合Java后端编程和SQL Server数据库来实现。这个系统可能旨在提供在线订餐、配送服务,或者是一个模拟的教学案例,帮助学习者...

    闲人资讯网DHTMLBOOK预览版

    总的来说,"闲人资讯网DHTMLBOOK预览版"涵盖了从基础的Web开发到更高级的交互式设计和数据库管理等多个IT领域的知识点,对于想要深入学习ASP开发、网站管理和Web交互设计的人来说,这是一个很好的实践项目。

    人教八上《短文两篇(答谢中书书、记承天寺夜游)》能力测试练习题.pdf

    《短文两篇》是人教版八年级上册的一篇语文课文,包含了两篇经典古文——《答谢中书书》和《记承天寺夜游》。这两篇文章都是中国古代散文的典范,分别由陶弘景和苏轼所著,展示了作者对自然美景的独特感悟和对人生的...

    闲人桌面程序 v2.0 正式版

    "闲人桌面程序 v2.0 正式版"是一个专为用户提供个性化桌面体验的应用程序。这个版本2.0标志着该软件的重大更新,通常意味着它包含了许多新特性、改进和性能优化,旨在提升用户在日常电脑操作中的舒适度和效率。 在...

    城市闲人BLOG网页模板

    城市闲人BLOG网页模板是一种专门用于创建个人博客的网页设计资源,旨在为用户提供一个具有城市风格和悠闲氛围的在线日记或文章分享平台。通过这个模板,你可以快速地搭建起自己的博客网站,无需具备深厚的编程知识,...

    短文两篇(答谢中书书记承天寺夜游).docx

    课时安排为两课时,第一课时主要讲解《答谢中书书》,包括作者介绍、文章解析、诵读训练和画面想象,以促进学生对文章内容和情感的全面理解。 总的来说,这两篇文章的学习旨在使学生接触到中国传统文化,提升他们对...

    (新人教版)2018年八年级语文上册第三单元10短文二篇记承天寺夜游课件.ppt

    【记承天寺夜游】是北宋文学家苏轼的一篇散文,选自《苏轼文集》。本文是苏轼被贬至黄州期间所作,展现了他在逆境中的旷达心态。苏轼是中国文学史上的巨匠,他的文章风格独特,与父亲苏洵、弟弟苏辙并称为“三苏”,...

    网络学子修改的闲人桌面图片管理系统

    《闲人桌面图片管理系统》是由网络学子精心修改的一款软件,主要功能聚焦于管理和组织个人电脑中的贺卡图片。这个系统提供了高效、便捷的方式来整理、查看和管理大量的贺卡图片资源,使得用户在寻找特定的贺卡图片时...

    《短文两篇》教案1.doc

    这篇中学教案围绕的是苏轼的《短文两篇》之一,主要探讨了文章的教学目标、教学过程以及对苏轼作品的深入理解。教学目的是引导学生理解重点词句、欣赏月色描写的艺术,并体会作者的情感变化及“闲人”的内涵。 在...

    闲人站群--建站平台源码

    【闲人站群--建站平台源码】是一款基于.NET开发框架构建的网站管理系统源代码,主要用于快速搭建和管理多个网站。这个系统是原创设计,允许用户自由使用,但需尊重作者的著作权益,保留相应的作者信息。在提供的资源...

    《记承天寺夜游》选择题解析(内容理解).pdf

    《记承天寺夜游》是北宋文学家苏轼的一篇散文...综上所述,《记承天寺夜游》是一篇描绘月夜景色、抒发个人情感的散文,其语言优美,意境深远,寓含了作者在人生低谷时期的独特心境和旷达胸怀,值得我们深入学习和领悟。

Global site tag (gtag.js) - Google Analytics