《R语言编程艺术》——2.2 声明

简介: 本节书摘来自华章计算机《R语言编程艺术》一书中的第2章,第2.2节,作者:(美)麦特洛夫(Matloff,N.)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.2 声明

通常,编译语言要求你声明变量,即在使用前告诉编译器变量的存在。这是前面提到的C语言的例子:

image

和大多数的脚本语言(例如Python和Perl)一样,R中不需要声明变量。例如,下面这行代码:

image

这行代码前没有事先引用z,它完全是合法(并且普遍)的。
但是,如果要引用向量中特定的元素,就必须事先告知R。例如,我们希望y是一个二元向量,由5和12两元素构成。下面的语句无法正常工作:
image

对于上面的例子,必须先创建y,比如按这种方式:

image

这种方法同样正确,因为右边创建了一个新向量,然后绑定(bind)给变量y。
我们写R代码时,不能突然冒出诸如y[2]这样的语句,其原因归咎于R这种函数式语言的特性。在函数式语言中,读写向量中的元素,实际上由函数来完成。如果R事先不知道y是一个向量,那么函数将没有执行的对象。
对于绑定,由于变量没有事先声明,则它们的类型不受限制。以下一系列操作完全是有效的:

image

x先被绑定为一个数值型向量,然后被绑定为字符串变量。(再次提醒C或C++背景的程序员,x只是一个指针,在不同的时间可以指向不同类型的对象。)

相关文章
|
IDE 开发工具
《R语言编程艺术》——导读
避免显式迭代是R语言的一个常见话题,这对于函数式编程语言来说是很典型的问题。你可以利用R的函数特性把迭代行为表达成隐式的,而不是用循环语句。这可以让代码执行起来更有效率,当R运行在大数据集上时运行时间会相差很大。
1887 0
《R语言编程艺术》——3.8 高维数组
本节书摘来自华章计算机《R语言编程艺术》一书中的第3章,第3.8节,作者:(美)麦特洛夫(Matloff,N.)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1414 0
《R语言编程艺术》——3.7 矩阵的行和列的命名问题
本节书摘来自华章计算机《R语言编程艺术》一书中的第3章,第3.7节,作者:(美)麦特洛夫(Matloff,N.)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1694 0
|
索引
《R语言编程艺术》——3.6 避免意外降维
本节书摘来自华章计算机《R语言编程艺术》一书中的第3章,第3.6节,作者:(美)麦特洛夫(Matloff,N.)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1310 0
《R语言编程艺术》——3.5 向量与矩阵的差异
本节书摘来自华章计算机《R语言编程艺术》一书中的第3章,第3.5节,作者:(美)麦特洛夫(Matloff,N.)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1056 0
|
索引
《R语言编程艺术》——3.4 增加或删除矩阵的行或列
本节书摘来自华章计算机《R语言编程艺术》一书中的第3章,第3.4节,作者:(美)麦特洛夫(Matloff,N.)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
5100 0
《R语言编程艺术》——3.3 对矩阵的行和列调用函数
本节书摘来自华章计算机《R语言编程艺术》一书中的第3章,第3.3节,作者:(美)麦特洛夫(Matloff,N.)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
3207 0
|
存储 索引
《R语言编程艺术》——3.2 一般矩阵运算
本节书摘来自华章计算机《R语言编程艺术》一书中的第3章,第3.2节,作者:(美)麦特洛夫(Matloff,N.)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
2219 0
|
存储 NoSQL
《R语言编程艺术》——3.1 创建矩阵
本节书摘来自华章计算机《R语言编程艺术》一书中的第3章,第3.1节,作者:(美)麦特洛夫(Matloff,N.)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1222 0
《R语言编程艺术》——第3章 3.0 矩阵和数组
本节书摘来自华章计算机《R语言编程艺术》一书中的第3章,第3.0节,作者:(美)麦特洛夫(Matloff,N.)著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1325 0