1 min read

Steem 和 R 语言:跟大鹏学 R 语言(3)变量和向量

原文链接: steemit, cnsteem, busy, chainbb, steemdb, steemd, busy, markdown

前情回顾: - 预告:“Steem 和 R 语言:跟大鹏学 R 语言”连载即将开始 - Steem 和 R 语言:跟大鹏学 R 语言(1)下载安装 - Steem 和 R 语言:跟大鹏学 R 语言(2)简单计算

本文选自《学 R:零基础学习 R 语言》(研究出版社,大鹏、李怡著,2018)第一章。

xuer-cover.jpg

有的常数,虽然没有定义好,但很容易算出来,例如自然对数的底e:

exp(1)  # 计算 e
## [1] 2.718282

可以像pi一样,我们自己定义一个名叫e的变量,把exp(1)的值保存在e里,方便以后调用:

e = exp(1) 

或者

e <- exp(1)  

两种办法的赋值效果完全等同。<- 是个箭头,表示把右边的值赋给左边。如果你去看别人写的代码,会发现有人爱用箭头,有人爱用等号,这完全取决于个人喜好。箭头的灵活之处在于,可以把左边的值赋给右边:

exp(1) -> e

本???的赋值符号统一用箭头。RStudio 中输入箭头有个快捷键:按alt + _ 就行了。

思考 1.2 箭头和等号的作用完全等同吗?什么情况下只能用等号,不能用箭头?上网搜搜答案。

好了,以后可以用e来代表自然对数的底了。查看e的值,可以看RStudio的右上面板,也可以在左上面板代码窗口输入变量名e,然后 ctrl + 回车,

e
## [1] 2.718282

就会在左下面板的结果窗口出现e的值。e可以用来做后续计算,比如:

x <- round(e)^2
x
## [1] 9

注意, R中大小写字母是有区别的,E和e是不同的两个变量名。这叫做“大小写敏感”。

小贴士 1.2 变量名的约定(三可三不可)
:) 可以是一个或多个字母,如 ‘e’, ‘x’, ‘mydata’;
:) 可以包括数字,如 ‘a1’, ‘a2’;
:) 可以包括句点和下划线,如 ‘temperature_air’, ‘humidity.max’。
:-( 不可以包含空格,如 ‘my data’;
:-( 不可以用数字或小数开头,如 ‘2x’,‘.3y’;

:-( 不可以用中文。

此外,你的变量名不能跟R的内置变量重名。这个倒是不必担心,遇见的时候R会自动发警告。一般来说,我们只要注意变量名不要加空格,不要用中文,就不会犯大错。

    不要给你的矩阵变量取名为“矩阵”。你会给你的狗狗起名字叫“狗狗”吗?

— Barry Rowlingson, October 2004

一个变量名可以存储很多数据。比如说,本市的月降水量从一月到十二月依次是:61, 45, 55, 46, 56, 79, 86, 57, 56, 56, 57, 71 mm。可以把这十二个数据赋值给一个变量 x,这种变量叫做向量:

x <- c(61, 45, 55, 46, 56, 79, 86, 57, 56, 56, 57, 71)
x
##  [1] 61 45 55 46 56 79 86 57 56 56 57 71

如果需要查看四月的降水量,就用方括号来指定“下标”。下面方括号中的4就是下标,表示调用 x 中的第四个数值。

x[4]
## [1] 46

再比如前面提到的二氧化碳数据,变量名就是co2,这一个变量里存的是多年二氧化碳的浓度。我们可以将它转存到另一个变量里:

y <- co2 # 转存
y[10] # 看看第十个数据
## [1] 313.18

R 支持向量运算。试试输入:

x + 100

##  [1] 161 145 155 146 156 179 186 157 156 156 157 171

x 里的每一个数都加上了 100 。这就是向量运算的好处:简单的代码,避免逐个计算。

现在我们可以回答RStudio左下方窗口里显示的结果开头那个[1]了,它表示的是这一行开头显示的是x的第一个值。如果显示的向量长,需要折行,那么下一行开头的方括号里显示的就是该行第一个元素在x中的位置,省得我们从头数。