R语言入门教学(2)-简单赋值与计算

First of All, 请把键盘输入法调成英文!!!R不能识别中文符号!!!

1.变量的建立与赋值

考虑了很久要不要细讲R语言的赋值,因为赋值在绝大多数的语言中,赋值真的是没有争议且简单的。而R由于历史原因(发展于S),S的赋值会使用_,如x_3:将3赋值于x。 anyway,现今R的赋值方法可谓是千奇百怪,到什么程度呢?和刚刚一样,我想把3赋值给x,我可以用 x<- 3, 3-> x, x<<- 3, 3->> x, x=3.  这五种方法都可以将3赋值给x,而且你去网上一搜,一堆关于r赋值的争吵,辩论(BTW, <- 类似于我国象形文字,代表的箭头)。我稍微讲一下区别吧, 首先目前比较流行且常用的赋值方法是x<-3 & x= 3. 这两个方法在纯粹的赋值上是没有区别的,都能够完成将3赋值给X:

 
  
> x<-3
> x
[1] 3
> rm(x) #删除变量x
> x= 3
> x
[1] 3    

但是我还是推荐使用x<- 3 作为赋值符号。原因有下:1. 源头上讲,赋值于等于是不一样的,赋值是给予,而等于仅仅是比较。2.在赋值上,x<- 3 & x= 3没有区别, 但是在下列情况下是存在区别的: mean(x= c(1:10)) & mean(x<- c(1:10) ), 虽然结果都为 5.5(mean是求均值, c(1:10)是指1、2、3...、10),但是跑一下以下代码就会知道区别:

 
  
> rm(x)
> mean(x= c(1:10))
[1] 5.5
> x
Error: object 'x' not found
> mean(x<- c(1:10))
[1] 5.5
> x
 [1]  1  2  3  4  5  6  7  8  9 10


第一个方程,x的值并没有被留下,而第二个方程中x却被赋值了。 这样看来,严格来讲,赋值使用<- 而不是= 会比较合适。因此,我博客内所有的赋值均使用<- 而不是 =。将3赋值于x,便是x<- 3。

2.良好的comments使我们事半功倍

R识别不了#之后的内容,如第一段代码中的‘# 删除变量x’ 只能被我们看见,却不能被R‘看见’,因此在R中,我们常常会在某些代码后加上#来写一些备注,方便日后我们理解代码的目的,这便是做comments. 养成良好的备注习惯会事半功倍,无论代码是你自己写的还是别人写的, 我相信,在你认为非常熟悉这些代码之后,过一个星期,你将会想’这些代码是在干什么?‘。 是的,不要高估自己的记忆力,以及,别人的理解力。所有从一开始,我们就要养成习惯,做好comment。

3.简单的计算

R毕竟是个统计软件,统计少不了的便是计算,我们接下来进入到数值的简单计算。

a.加减乘除

R中的加减乘除分别是+-*/, 进行如下运算

 
  
> 2+2
[1] 4
> 2-2
[1] 0
> 2*3
[1] 6
> 2/2
[1] 1


需要注意的是,当R的计算与赋值结合的时候,容易犯的错误:

 
  
> x<- 3 #将3赋值给x
> x+3 #计算x+3
[1] 6  #x+3 等于6
> x
[1] 3  #x依然是3
> x<- x+3 #x+3 并且重新赋值x
> x  #查看x的值
[1] 6 #x变为了6,因为被重新赋值了


b. 指数与自然对数 ^ &log()

指数的表达方法是^,如2的3次方表达为2^3, 自然对数表达为 log(),如10的自然对数为log(10). 底数不是e的情况也是使用log(),但是因为涉及到了argument, 暂时就不讲解。有兴趣可以上网查询,也很简单。

c. 余数与取整 %% & %/%

希望求9处以4的整数或者余数,我们使用9 %/% 4,以及9 %% 4. 如下:

 
  
> 9%/%4
[1] 2
> 9%%4
[1] 1


4.变量的删除

在上文其实已经提到了,删除变量在R里面使用的是remove()函数,我们一般简写为rm(). 要删除x便是rm(x),如果希望一次性删除所有的变量,我们使用rm(list= ls())方程。这样子环境中所有之前赋值过的变量都会被删除:

 
  
> x<- 3
> x
[1] 3
> rm(x) #删除x
> x
Error: object 'x' not found
> x<- 1
> y<- 2
> rm(list = ls()) #删除所有变量
> x
Error: object 'x' not found
> y
Error: object 'y' not found


5.总结

  • 希望对变量进行改变的时候切记要重新赋值变量,否则只是计算并不是改变变量的值(x<- x+3 ,x+3 前者改变x后者不改变)
  • 养成良好的comment习惯(在认为需要做出解释的代码附近加#)
  • 多写多练习,这里只讲了一些基础的运算,而R的计算方法是很多的,求方差,平方根等。以上都可以从网上找到,日后我也不会再做讲解,function不会其实无所谓,google就行了。多多练习,在犯错中前行。
  • 记住,被赋值过的变量,尽量不要再进行赋值,除非你想要覆盖前变量。

你可能感兴趣的:(R语言入门教学)