R的记号体系
现在你手头已经有了一副扑克牌,那么扑克牌就应该做一些扑克牌该做的事情。比如说,玩牌时需要经常洗牌,另外还需要发牌(每次都发最上方的那张牌,我们不出老千)要想实现这些操作,需要能够操作数据框内的个别值,这是数据科学家必须掌握的基本技能。比如说,要从扑克牌的最上面开始发牌,你需要编写一个可以从数据框中提取第一行。(见下面解答)
导入数据下载地址——》下面所用到的数据
首先导入数据:
选择数据deck.csv然后导入。
1、值的选取
R的记号体系可以从R对象中提取值,先写出该数据框的名称,在其后紧跟一对中括号。deck[,]
中括号内有两个索引参数,以逗号分隔。索引参数用来告诉R需要提取哪些值。R用第一个索引参数选择数据框中相应的行,用第二个索引参数选择相应的列。
1.1 正整数索引
deck[i,j]会返回deck数据框中第i行第j列的元素.
R使用了线性代数中的记号体系。本图中的命令会提取出灰色部分的数据
要提取多个值,使用正整数向量代替单一整数作为索引。比如,可以用deck[1,c(1,2, 3)]或者deck[1,1:3]提取出deck数据框中第一行的所有值。
deck[1,c(1,2,3)]
下面的命令会将deck数据框的第一行数据重复提取两次。
deck[c(1,1),c(1,2,3)]
R的记号体系并不仅限于数据框。可以使用同样的索引语法提取任意R对象中的值, 比如可以用一个索引向量提取一个向量中的部分值(向量是一维的)
vec <- c(6,1,3,6,10,5)
vec[1:3]
如果从一个数据框中提取两列或者两列以上的数据,R会返回一个新的数据框。deck[1:2,1:2]
然而,如果只提取一列,R则会返回一个向量。deck[1:2,1]
在这种情况下,如果仍想返回一个数据框,可以在中括号内添加参数: drop=FALSE.
deck[1:2,1,drop=FALSE]
1.2 负整数索引
在索引时使用负整数的效果与正整数刚好相反。R返回的元素将不包含负整数索引所对应的元素。比如说, deck[-1,1:3]会返回dec数据框中除了第一行元素之外的所有元素。
deck[-(2:52),1:3]
只会返回第一行元素(返回结果将排除第2行到第52行的所有元素)。
如果你需要选取数据框中大部分的行或者列,使用负整数索引将比使用正整数索引更高效。
如果在一个相同的索引位置同时使用正整数和负整数,R便会报错。