子集数据框 - 对语法感到困惑

时间:2016-06-28 22:26:59

标签: r

说我有以下数据框:

 LungCap Age Height Smoke Gender Caesarean
1   6.475   6   62.1    no   male        no
2  10.125  18   74.7   yes female        no
3   9.550  16   69.7    no female       yes
4  11.125  14   71.0    no   male        no
5   4.800   5   56.9    no   male        no
6   6.225  11   58.7    no female        no

现在我想选择年龄为> gt的所有行。 11,性别是女性。这让我得到了我想要的东西:

y[y$Age>11&y$Gender=="female",]

  LungCap Age Height Smoke Gender Caesarean
2  10.125  18   74.7   yes female        no
3   9.550  16   69.7    no female       yes

但这不是:

y[y$Age>11&y$Gender=="female"]

  Age Height
1   6   62.1
2  18   74.7
3  16   69.7
4  14   71.0
5   5   56.9
6  11   58.7

我是R的新手,我不明白第二个查询在做什么,除了它没有给我我想要的东西。

1 个答案:

答案 0 :(得分:3)

使用第一种语法对数据帧进行子集化时,方括号中的第一个数字向量(或逻辑向量)表示要选择的行,而第二个(逗号后面)表示列。

如果您没有在逗号后面明确插入任何内容,则R假设您需要所有列。

如果你甚至没有输入逗号,R假定第一个数字指的是你想要的列。

在你的情况下y$Age>11&y$Gender=="female"是一个引用位置2和3的逻辑向量。因此,如果你不使用逗号,R认为你只想选择第2列和第3列。因此你得到年龄和高度。