2.6 本章小结
R语言初学指南
在上例中,由于向量t、principal.paid.month.t、interest.paid.month.t及principal.remaining都包含360(或m)个元素,它们在控制台显示时会出现大片的数字。若能将它们组织成某种表格,使之能更好地呈现出来就好了。同样,还需要几种能将大型数据表格输入到R中的方法。在第5章中将会讨论数据的输入及输出。
在之前给出的脚本中,函数sum()可能会令人好奇,它可对任一向量中的所有元素求和。R中有很多这样的函数,在第3章中会介绍其中一部分。同样在第3章中还可学到如何写自定义的函数,或许更重要的是,可学到为什么要写自定义的函数!
到这里可能已经有人注意到,R脚本与计算机学家所讲的计算机程序极为相似,写脚本几乎就是将计算机程序组织到一起。是的,就是这样的。你就是极客!要习惯你的新身份。
这里将会从零开始,讲解什么是贷款方程!看上去好像需要很多代数计算才能得出这个方程,但实际上每一个步骤都很简单(且这些代数方法会多次用到)。若只想继续完成这个例子,可接受这个方程并跳过这部分内容。若决定继续研究这个推导,先停一下去买几份铅笔公司的股票吧。
在开始推导贷款方程之前,先介绍一下等比级数公式,这一巧妙的数学结论对推出方程很有帮助。任取一个非零实数r,将它前k次幂累加,其中k为任意正整数:
这个求和表达式即为等比级数,其中的1表示r0。下面,用(1−r)/(1−r)乘以整个表达式,即将表达式与1相乘,故求和表达式的值不变。这个结果可写成分数形式:
看一下分子上的乘积会是怎样:等比级数中的每一项分别乘以1和−r。
别忘了分母上的(1−r)项,这样,对r的各阶幂的和得到了一个十分简单的表达式:
这个公式即为等比级数公式,它经常出现在各种金融及科学计算中。一定要好好记住它(记在大脑的硬盘里,而不是RAM中)。
下面回到之前的抵押贷款问题中。在分析每月还款额时以月为时间单位,故在这个案例中共有30×12=360份还款。年利率也是这个计算中的一部分,这里采用0.05作为年利率,则月利率为0.05/12=0.00417(近似值)。
每月应偿还一部分本金,并当月支付本金余额的利息。其中每月偿还的本金额度是不等的,将其分别记为x_1 ,x_2 ,x_3 , cdots ,x_{359} ,x_{360} ,且每个值都是未知的。但现在已知将所有的值相加之后,其和必须等于贷款的本金额度:
同样,这里还知道每月还款情况的一些信息。第1个月的还款为本金x1与利息(0.00417)×(25000)之和。第2个月的还款为本金x2加上利息(0.00417)×(25000−x1)。在每月还款的过程中,由于已还本金的累加,未偿还本金会不断减少:
同样,这里还希望每月的总还款额均相等。在上面所列出的表达式中,找出第1个月和第2个月的表达式,并将两者相减。若两月的还款额相等,则相减后的值为0。通过相减还可找到x1与x2之间的关系:
这个等式是不是看上去眼熟?本金的偿还额度是呈指数增长的,与第1章中计算的银行存单类似。在任意给定的第t月中,须偿还的本金额度可用第1个月的本金偿还额度表示:
这里只需知道第1个月的偿还额,就可计算出其他所有月份的偿还额。别忘了,所有月份的偿还额的总和要与本金总额(所有借款额)相等:
故,第t个月偿还的本金为:
1.R脚本是一个预先准备好的R命令集合,从头到尾按顺序运行。在Windows和Mac版本的R中,可使用R自带的R编辑器来编写、保存以及运行脚本。在现有的Unix版本的R中,可使用任意的外部文本编辑器来编写及保存脚本。
2.在“File”菜单中可按下面路径找到R编辑器:File→New script可打开一个空白的编辑器来编写新的脚本;File→Open script可打开一个已存在的脚本。
3.在“File”菜单中可将R编辑器中的脚本保存为文件:File→Save可保存对已存在文件的修改;File→Save as…可另存为新脚本。对包含R脚本的文件,其文件名后缀一般为“.R”。在第一次保存文件时,R编辑器不会自动添加该后缀。
4.“运行”一个脚本是指将R命令发送到控制台并运行。在R编辑器中,可用“Edit”菜单运行脚本:Edit→Run all。在Unix中,可将整个R脚本复制并粘贴到R控制台的提示符处,再运行脚本,或者将文件路径及文件名输入到命令source("")引号里面,在控制台中运行。
5.通过在R编辑器中选中并高亮部分脚本并利用“Edit”菜单可以实现部分命令的运行:Edit→Run line or selection。在Unix中,可将部分脚本复制并粘贴到控制台的提示符处。
6.由于输入错误和(或)其他失误,在运行刚编写好的R脚本进行计算时,可能会出现一些问题或“bug”。从头到尾一行行地运行脚本,可有效地查找bug。某些bug可能会导致脚本中后续的一些R语句出错,故有时修正一个bug可同时解决后面的几个bug。
7.R脚本中不参与运行的命令行称为注释。注释可提供有价值的解释并能辅助回忆脚本的功能,故建议大量使用注释。注释的标识符为“#”,每行中该符号右侧的内容都会被识别为注释,它们不参与运行。
例如:
# Here.is.an.illustration of element-by-element vector
# multiplication in R.
x=c(1,2,3) # x.is.defined.as.the.vector.with.elements
# 1, 2, 3.
y=c(−1,−2,−3) # y.is.definedas.the.vector.with.elements
# −1, −2, −3.
z=x*y # z is defined as the vector containing.the
# elements of x multiplied by the
# corresponding elements of y.
z # Print z to the console.