R语言入门运行样例

命令行界面

启动R软件后进入命令行界面,每输入一行命令,就在后面显示计算结果。 可以用向上和向下箭头访问历史命令; 可以从已经运行过的命令中用鼠标拖选加亮后, 用Ctrl+C复制后用Ctrl+V粘贴, 或用Ctrl+X一步完成复制粘贴, 粘贴的目标都是当前命令行。

如果使用RStudio软件, 有一个“Console窗格”相当于命令行界面。

四则运算

四则运算如:

5 + (2.3 - 1.125)*3.2/1.1 + 1.23E3
## [1] 1238.418

结果为1238.418, 前面显示的结果在行首加了井号, 这在R语言中表示注释。 本教程的输出前面一般都加了井号以区分于程序语句。 输出前面的方括号和序号1是在输出有多个值时提供的提示性序号, 只有单个值时为了统一起见也显示出来了。 这里1.23E3是科学记数法, 表示 1.23×103 1.23×103。 用星号*表示乘法,用正斜杠/表示除法。

^表示乘方运算,如

2^10
## [1] 1024

重要提示:关闭中文输入法,否则输入一些中文标点导致程序错误。

计算例子

从52张扑克牌中任取3张, 有多少种不同的组合可能? 解答:有

C352=52!3!(523)!=52×51×503×2×1 C523=52!3!(52−3)!=52×51×503×2×1
种, 在R中计算如:

52*51*50/(3*2)
## [1] 22100

练习

  1. 某人存入10000元1年期定期存款,年利率3%, 约定到期自动转存(包括利息)。问:

    1. 10年后本息共多少元?

    2. 需要存多少年这10000元才能增值到20000元?

  2. 成语说:“智者千虑,必有一失;愚者千虑,必有一得”。 设智者作判断的准确率为 p1=0.99 p1=0.99, 愚者作判断的准确率为 p2=0.01 p2=0.01, 计算智者做1000次独立的判断至少犯一次错误的概率, 与愚者做1000次独立判断至少对一次的概率。

数学函数

数学函数——平方根、指数、对数

例:

sqrt(6.25)
## [1] 2.5
exp(1)
## [1] 2.718282
log10(10000)
## [1] 4

sqrt(6.25)表示 6.25 6.25,结果为2.5。 exp(1)表示 e1 e1,结果为 e=2.718282 e=2.718282。 log10(10000)表示 lg10000 lg⁡10000,结果为 4 4。 log为自然对数。

数学函数——取整

例:

round(1.1234, 2)
## [1] 1.12
round(-1.9876, 2)
## [1] -1.99
floor(1.1234)
## [1] 1
floor(-1.1234)
## [1] -2
ceiling(1.1234)
## [1] 2
ceiling(-1.1234)
## [1] -1

round(1.1234, 2)表示把1.1234四舍五入到两位小数。 floor(1.1234)表示把1.1234向下取整,结果为1。 ceiling(1.1234)表示把1.1234向上取整,结果为2。

数学函数——三角函数

例:

pi
## [1] 3.141593
sin(pi/6)
## [1] 0.5
cos(pi/6)
## [1] 0.8660254
sqrt(3)/2
## [1] 0.8660254
tan(pi/6)
## [1] 0.5773503

pi表示圆周率 π πsin正弦, cos余弦, tan正切, 自变量以弧度为单位。 pi/6 30 30∘

数学函数——反三角函数

例:

pi/6
## [1] 0.5235988
asin(0.5)
## [1] 0.5235988
acos(sqrt(3)/2)
## [1] 0.5235988
atan(sqrt(3)/3)
## [1] 0.5235988

asin反正弦, acos反余弦, atan反正切, 结果以弧度为单位。

分布函数和分位数函数

例:

dnorm(1.98)
## [1] 0.05618314
pnorm(1.98)
## [1] 0.9761482
qnorm(0.975)
## [1] 1.959964

dnorm(x)表示标准正态分布密度  ϕ(x)=12πe12x2 ϕ(x)=12πe−12x2pnorm(x)表示标准正态分布函数 Φ(x)=xϕ(t)dt Φ(x)=∫−∞xϕ(t)dt。 qnorm(y)表示标准正态分布分位数函数  Φ1(x) Φ−1(x)。 还有其它许多分布的密度函数、分布函数和分位数函数。 例如,

qt(1 - 0.05/2, 10)
## [1] 2.228139

求自由度为10的t检验的双侧临界值。 其中qt(y,df)表示自由度为df的t分布的分位数函数。

输出

简单输出

命令行的计算结果直接显示在命令的后面。 在用source()运行程序文件时, 需要用print()函数显示一个表达式的结果,如:

print(sin(pi/2))
## [1] 1

cat()函数显示多项内容, 包括数值和文本, 文本包在两个单撇号或两个双撇号中,如:

cat('sin(pi/2)=', sin(pi/2), '\n')
## sin(pi/2)= 1

cat()函数最后一项一般是'\n', 表示换行。 忽略此项将不换行。

再次提示:要避免打开中文输入法导致误使用中文标点。

sink()函数作运行记录

R使用经常是在命令行逐行输入命令(程序), 结果紧接着显示在命令后面。 如何保存这些命令和显示结果? 在R命令行中运行过的命令会被保存在运行的工作文件夹中的一个名为.Rhistory的文件中。 用sink()函数打开一个文本文件开始记录文本型输出结果。 结束记录时用空的sink()即可关闭文件不再记录。 如

sink('tmpres01.txt', split=TRUE)
print(sin(pi/6))
print(cos(pi/6))
cat('t(10)的双侧0.05分位数(临界值)=', qt(1 - 0.05/2, 10), '\n')
sink()

sink()用作输出记录主要是在测试运行中使用, 正常的输出应该使用cat()函数、write.table()write.csv()等函数。

练习

  1. cat()函数显示

    log10(2)=*** log10(5)=***

    其中***应该代以实际函数值。

  2. sink()函数开始把运行过程记录到文件“log001.txt”中,在命令行试验几个命令,然后关闭运行记录,查看生成的“log001.txt”的内容。

向量计算与变量赋值

R语言以向量为最小单位。用<-赋值。如

x1 <- 1:10
x1
##  [1]  1  2  3  4  5  6  7  8  9 10

一般的向量可以用c()赋值, 如

marks <- c(3, 5, 10, 5, 6)

在程序语言中,变量用来保存输入的值或计算的结果。 变量可以存放各种不同类型的值, 如单个数值、多个数值(称为向量)、单个字符串、多个字符串(称为字符型向量),等等。 单个数值称为标量

print()函数显示向量或在命令行中显示向量时, 每行显示的行首会有方括号和数字序号, 代表该行显示的第一个向量元素的下标。如

12345678901:12345678920
##  [1] 12345678901 12345678902 12345678903 12345678904 12345678905
##  [6] 12345678906 12345678907 12345678908 12345678909 12345678910
## [11] 12345678911 12345678912 12345678913 12345678914 12345678915
## [16] 12345678916 12345678917 12345678918 12345678919 12345678920

向量可以和一个标量作四则运算, 结果是每个元素都和这个标量作四则运算,如:

x1 + 200
##  [1] 201 202 203 204 205 206 207 208 209 210
2*x1
##  [1]  2  4  6  8 10 12 14 16 18 20
2520/x1
##  [1] 2520 1260  840  630  504  420  360  315  280  252

两个等长的向量可以进行四则运算, 相当于对应元素进行四则运算,如

x2 <- x1 * 3
x2
##  [1]  3  6  9 12 15 18 21 24 27 30
x2 - x1
##  [1]  2  4  6  8 10 12 14 16 18 20

R的许多函数都可以用向量作为自变量, 结果是自变量的每个元素各自的函数值。 如

sqrt(x1)
##  [1] 1.000000 1.414214 1.732051 2.000000 2.236068 2.449490 2.645751
##  [8] 2.828427 3.000000 3.162278

结果是1到10的整数各自的平方根。

工作空间介绍

在命令行中定义的变量, 在退出R时,会提问是否保存工作空间, 一般选择保存。 再次启动R后, 能够看到以前定义的各个变量的值。

在使用R的官方版本时, 如果在Windows中使用, 一般把不同的数据分析项目放在不同的文件夹中。 将R的程序快捷图标复制到每一个项目的文件夹中, 并用右键菜单讲快捷图标的“属性”中“起始位置”改为空白。 要分析哪一个项目的数据, 就从那个项目文件夹中的R快捷图标启动, 这样可以保证不同的项目有不同的工作空间。

如果使用RStudio软件, 也需要把不同项目放在不同文件夹, 并且每个项目在RStudio中单独建立一个“项目”(project)。 要分析那个项目的数据, 就打开那个项目。 不同项目使用不同的工作空间。

练习

  1. 某人存入10000元1年期定期存款,年利率3%, 约定到期自动转存(包括利息)。列出1、2、…………、10年后的本息金额。
  2. 显示2的1,2,, 20次方。
  3. 定义x1为1到10的向量,定义x2为x1的3倍,然后退出R,再次启动R,查看x1和x2的值。

绘图示例

函数曲线示例

如下程序用curve()函数制作 y=x2 y=x2函数的曲线图, curve()函数第二、第三自变量是绘图区间:

curve(x^2, -2, 2)

类似地, sin(x) sin⁡(x)函数曲线图用如下程序可制作, 用abline()函数添加参考线:

curve(sin(x), 0, 2*pi)
abline(h=0)

条形图示例

假设有10个男生,7个女生,如下程序绘制男生、女生人数的条形图:

barplot(c('男生'=10, '女生'=7), 
             main='男女生人数')

利用适当选项可以人为定制颜色、控制条形宽窄。 实际问题中,个数(频数)一般是从数据中统计得到的。

散点图示例

下面的例子用plot()函数做了散点图, plot()函数第一个自变量是各个点的横坐标值, 第二个自变量是对应的纵坐标值。

plot(1:10, sqrt(1:10))

R软件自带的图形示例

R软件中自带了一些演示图形。通过如下程序可以调用:

demo("graphics")
demo("image")

练习

  1. exp(x) exp⁡(x) (2,2) (−2,2)区间的函数图形。
  2. ln(x) ln⁡(x) (0.01,10) (0.01,10)区间的函数图形。

汇总统计示例

表格数据

统计用的输入数据典型样式是Excel表那样的表格数据。 表格数据特点:每一列应该是相同的类型(或者都是数值, 或者都是文字,或者都是日期), 每一列应该有一个名字。

这样的表格数据,一般可以保存为.csv格式: 数据项之间用逗号分开,文件本身是文本型的, 可以用普通记事本程序查看和编辑。 Excel表可以用“另存为”命令保存为.csv格式。 常用的数据库管理系统一般也可以把表保存为.csv格式。

读入表格数据

例如,“taxsamp.csv”是这样一个csv格式表格数据文件, 可以用Excel打开,也可以用记事本程序或notepad++打开。 内容和下载见本页面后面的附录。

用如下程序可以把.csv文件读入到R中:

tax.tab <- read.csv("taxsamp.csv", header=TRUE, as.is=TRUE)
print(head(tax.tab))

程序中的选项header=TRUE指明第一行作为变量名行, 选项as.is=TRUE说明字符型列要原样读入而不是转换为因子(factor)。 读入的变量tax.tab称为一个数据框(data.frame)。 head()函数返回数据框或向量的前几项。 比较大的表最好不要显示整个表, 会使得前面的运行过程难以查看。

练习

  1. 用Excel软件查看“taxsamp.csv”的内容(双击即可)。

  2. 用记事本程序或notepad++软件查看“taxsamp.csv”的内容。

  3. 读入“taxsamp.csv”到R数据框tax.tab中,查看tax.tab内容。

分类变量频数统计

在tax.tab中, “征收方式”是一个分类变量。 用table()函数计算每个不同值的个数,称为频数(frequency):

table(tax.tab[,'征收方式'])
## 
##     查帐征收 定期定额征收 定期定率征收 
##           31           16            2

类似地可以统计 “申报渠道”的取值频数:

table(tax.tab[,'申报渠道'])
## 
## 大厅申报 网上申报 
##       18       31

也可以用table()函数统计“征收方式”和“申报渠道”交叉分类频数,如:

table(tax.tab[,'征收方式'], tax.tab[,'申报渠道'])
##               
##                大厅申报 网上申报
##   查帐征收            9       22
##   定期定额征收        9        7
##   定期定率征收        0        2

上述结果制表如下:

knitr::kable(table(tax.tab[,'征收方式'], tax.tab[,'申报渠道']) )
  大厅申报 网上申报
查帐征收 9 22
定期定额征收 9 7
定期定率征收 0 2

数值型变量的统计

数值型变量可以计算各种不同的统计量, 如平均值、标准差和各个分位数。 summary()可以给出最小值、最大值、中位数、四分之一分位数、四分之三分位数和平均值。如

summary(tax.tab[,'营业额'])
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##       0     650    2130  247300    9421 6048000

中位数是从小到大排序后排在中间的值。 四分之一和四分之三分位数类似。

统计函数以一个数值型向量为自变量, 包括sum(求和), mean(平均值), var(样本方差), sd(样本标准差), min(最小值), max(最大值), range(最小值和最大值)等。如

mean(tax.tab[,'营业额'])
## [1] 247327.4
sd(tax.tab[,'营业额'])
## [1] 1036453

如果数据中有缺失值, 可以删去缺失值后计算统计量, 这时在meansd等函数中加入na.rm=TRUE选项。

练习

用如下程序定义一个变量x, 然后求x的平均值和最小值、最大值。

x <- c(3, 5, 10, 5, 6)

运行源程序文件

source()函数可以运行保存在一个文本文件中的源程序。 比如,如下内容保存在文件ssq.r中:

sum.of.squares <- function(x){
  sum(x^2)
}

用如下source()命令运行:

source("ssq.r")

运行后就可以调用自定义函数sum.of.squares()了。

源程序文件存心编码问题。 对于源程序编码与系统默认编码不同的情况, 在source()函数中可以添加encoding=选项。 例如, 保存为UTF-8编码的源程序在简体中文MS Windows系统的R中运行, 可以在source()函数中可以添加encoding="UTF-8"选项。 保存为GBK编码的源程序文件在MAC系统的R中运行, 可以在source()函数中可以添加encoding="GBK"选项。

在RStudio中, 可以打开一个源程序文件查看与编辑。 用快捷键“Ctrl+Enter”或快捷图标“Run”可以运行当前行或者加亮选中行, 快捷图标“Source”可以运行整个文件。

当前工作目录

在用source()调用源程序文件或者用read.csv()读入数据文件时, 如果不写文件名的全路径, 就认为文件位置是在所谓“当前工作目录”。 用getwd()函数可以查询当前工作目录, 用setwd()函数可以设置当前工作目录。

在MS Windows操作系统中使用R软件时, 一种好的做法是把某个研究项目所有数据和程序放在某个文件夹如 c:\work中, 把R的程序快捷图标复制到该目录中, 在资源管理器中对该图标调用鼠标右键菜单“属性”, 从弹出对话框中,把“起始位置”一栏清除。 这样,每次从这个快捷图标启动R, 就可以自动以所在子目录为当前工作目录, 工作空间和命令历史记录也默认存放在这里。

在MS Windows操作系统的R中使用文件路径时, 要用正斜杠作为连接符, 使用反斜杠则需要成对使用, 如setwd('d:/work')setwd('d:\\work')

如果使用RStudio软件, 将某个研究项目所有数据和程序放在某个文件夹中, 然后建立一个新项目(project)指向该文件夹。

练习

编辑生成ssq.r源程序文件并用source()函数运行, 然后计算:

sum.of.squares(1:5)

帮助

用帮助菜单中“html帮助”到互联网浏览器中查看帮助文档。 “Search engine and keywords”项下面有分类的帮助。 有软件包列表。

在命令行,用问号后面跟随函数名查询某函数的帮助。 用example(函数名)的格式可以运行此函数的样例,如:

example(mean)
## 
## mean> x <- c(0:10, 50)
## 
## mean> xm <- mean(x)
## 
## mean> c(xm, mean(x, trim = 0.10))
## [1] 8.75 5.50

安装sos附加包(package),用findfn(函数名)查询某个函数, 结果显示在互联网浏览器软件中。

附录:数据

公司纳税数据样例

本数据是某地区2013年12月所属税款申报信息的一个子集, 仅含20个公司的数据。

数据文件下载

数据文件显示

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值