几分钟怎么可能了解R的入门知识嘛。。。给你们看看《R in action》里“入门”部分的目录——
还有一面,就不放出来了。总共有100多页。
讲真,虽然是经典教材,但《R in action》这种欺负浮躁现代人的做法还是让我心里狠狠抽搐了一把,差点就放弃了(虽然我还是把它们看完了)。
“>”之后就是光标,你可以向里面输入数字、计算式,也可以输入函数和变量,或者一切R能听懂的语言。R都会热情地给你反馈。
当你安装好R和Rstudio之后,就可以尽情地尝(tiao)试(xi)命令行了。在Rstudio里面,命令行默认位于屏幕左下方区域,如图:
左上区域则是代码储存窗口,你可以在里面先随便写点代码,一言不合就点击Run来运行它们。(以你们目前的实力,R应该会立马给你们报错。)
命令行里面,一般会输入哪些东西?
第一种——算式,诸如1 1,3 5之类的。这种时候R完全可以当做计算器来用。(简直是废话)值得一提的是,注意看上面的图,输入1 1之后R给出的返回值是[1] 2,这里方括号里的[1]代表的是顺序,我们会在后面(数据对象)具体讲解。
第二种——调用对象。会在数据对象中讲解。
第三种——函数,函数,函数,重要的事情说三遍。命令行里99%以上的输入,都是函数,你说重要不重要?具体的,我们会在函数里面详细讲解。
五、数据对象
如果说R是一个厨房,那么数据对象就是不同的容器,锅碗瓢盆应有尽有。数据只有借由容器,才能进行清洗、加工,以及用于分析。
厨房里的锅碗瓢盆有很多种,R的数据对象也有很多种。但目前大家记住其中的三种就好:
1.碗——向量(vector)
厨房里最小的容器,一般都是碗。向量也是R里面最小、最基础的数据对象。
> c(1,2,3,4,5)[1] 1 2 3 4 5> c(1:20)
函数c()的效果,就是把括号里面的东西做成一个向量,向量的不同元素以“,”作为分隔。
而“:”的作用显而易见,1:20表示从1到20这20个数字。
注意,看代码的最后一行,开头是方括号[23]。这代表这一行从向量的第23个元素开始。回想上一节,为什么“1 1”返回值是“[1] 2”呢?就是因为向量是R里面最小的数据对象,所以1 1不得不生成只有一个元素的向量。这就好比,厨房里最小的碗也有拳头大,但为了装一颗豆子,还是要大材小用。
> x<-c(1,2,3,4) #把向量赋值给x> y<-c(3,5,7,9)> x #调用向量x[1] 1 2 3 4> y[1] 3 5 7 9> x[2] #调用向量x的第二个元素[1] 2
上面的代码很重要,它进行了一个最基本也是最重要的操作:赋值。可以看做是“给容器贴标签”
方法很简单,采用“<-”符号就可以了。箭头指向标签名。上面的代码表示,有一个碗里放了四颗豆子分别叫做1、2、3、4,于是我们给这个碗贴上标签叫做“x”。另一个碗里放了四颗豆子叫做3、5、7、9,我们贴上“y”的标签。
赋值有什么作用呢?作用就是,如果没有标签,我们可能就找不到这两个碗和里面的豆子了。
赋值之后就是调用,只要输入变量名称(标签名)就能调用对应的内容(碗)。而输入变量名称 顺序号,就能调用单个元素(豆子)。如上所示
> x y[1] 4 7 10 13> x%*%y #这里“%*%”表示求两个向量的内积,然后会生成一个1*1矩阵
向量之间也可以直接运算,方法和初高中数学里学的向量运算差不多,类似于上面那些。大家可以自己实验一下。不明白的,你们就自己百度去吧。(不负责任的我啊。。)
2.多功能橱柜——列表(list)
列表是一个神奇的数据对象,如同厨房里的多功能橱柜。
橱柜里有很多格子,每个格子都能盛放很多东西。列表也是这样,列表里可以单独分出很多格子,每个格子都能盛放一个单独的数据对象(可以是向量、矩阵,甚至是另外一个列表)。
而橱柜的格子也需要编号,编号方法略有不同。看下面的例子:
> list1<-list(x,y,c(3,3))> list1[[1]][1] 1 2 3 4[[2]][1] 3 5 7 9[[3]][1] 3 3
通过list()函数,我们定义了一个叫做list1的列表(多功能橱柜)。这里面现在有三个格子,非常清晰地显示在代码中,它们的编号方式是两个方括号[[1]]。
聪明的读者应该也能想到,列表及其中的元素同样也能进行调用。
> list1[[1]]
三个格子中,每个格子装一个向量。
列表的作用是什么?等到下一章,你们就知道了。
3.炒锅——数据框(data frame)
数据框是R里面最重要的数据对象!数据框是R里面最重要的数据对象!数据框是R里面最重要的数据对象!重要的事情说三遍!
炒锅在厨房里无疑也是最重要的。菜品的完成,大部分时间都依赖炒锅。我们数据分析的过程中,数据大部分时间也是呆在数据框里面的。
但数据框这个名字有点抽象。其实,他就是二维表。或者再通俗一点,就是我们天天见到的表格。在R里面大概长成下面这样:
States是一个数据框(表格),head()函数帮助我们调用了这个表格的前五行。
我们能看到,这个表格包括美国各个州的人口、收入等等数据。虽然没有画线,但是还是能看得出典型的行标签、列标签和数据内容的。显然,这就是我们日常处理数据的时候,最喜欢用的方法:表格。
数据框的赋值通过函数data.frame()完成。很简单,日后提到的时候,一看就懂。
表格里的内容当然也可以调用,但似乎没有前两个那么直观。方法如下:
> States$pop
日常操作中,我们一般会用attach()来锁定一个数据框。之后,只要直接输入列名称,就能调用列了。如下。
> attach(States)> pop #效果相当于语句States$pop
4.数据对象小结
R的数据对象有很多种,我们现在先记住其中的三种。
碗——向量(vector)
多功能橱柜——列表(list)
炒锅——数据框(data frame)
并且,记住他们的结构,赋值方法,以及调用方法。
其他的数据对象包括矩阵(matrix),数组(array),时间序列(ts)等等,以后再谈。
值得一提的是,千万不要把数据对象和数据类型搞混。前者就是我们刚刚讲的容器的种类,而后者则是豆子的种类。
数据类型包括数值型(numeric),字符型(character),缺失值(NA)等等,一看就懂。可以通过mode()函数检测数据类型:
> x<-c(1,2,3.3,pi)
美好的一天,再写下去可能看官们就要睡着了。(你们是不是已经忘掉了标题中的“几分钟”呢?哈哈哈哈)
文章来源:知乎专栏——Still的数据分析笔记(作者的文章不多,但是都很有趣,内容也很好)
,