说我有以下数据框:
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的新手,我不明白第二个查询在做什么,除了它没有给我我想要的东西。
答案 0 :(得分:3)
使用第一种语法对数据帧进行子集化时,方括号中的第一个数字向量(或逻辑向量)表示要选择的行,而第二个(逗号后面)表示列。
如果您没有在逗号后面明确插入任何内容,则R假设您需要所有列。
如果你甚至没有输入逗号,R假定第一个数字指的是你想要的列。
在你的情况下y$Age>11&y$Gender=="female"
是一个引用位置2和3的逻辑向量。因此,如果你不使用逗号,R认为你只想选择第2列和第3列。因此你得到年龄和高度。