R按条件行号选择多行

时间:2015-05-12 14:29:17

标签: r dataframe row

我有一个像这样的R数据框:

a<-c(1,2,3,4,5)
b<-c(6,7,8,9,10)
df<-data.frame(a,b)
colnames(df)<-c("a","b")

df
  a  b
1 1  6
2 2  7
3 3  8
4 4  9
5 5 10

我想通过按行号选择行来获取列a的第1行,第2行,第3行和第5行,所以1 2 3 5

我已尝试df$a[1:3,5],但我得到Error in df$a[1:3, 5] : incorrect number of dimensions。 什么工作是c(df$a[1:3],df$a[5]),但我想知道是否有更简单的方法来实现这一点与R?

1 个答案:

答案 0 :(得分:5)

您的数据框有两个维度(行和列)。当您使用方括号提取值时,R期望逗号之前的所有内容指示所需的行,并且逗号之后的所有内容都指示所需的列(请参阅:?[)。因此,df[1:3,5]表示第5行的第1行到第3行。要将所需的行转换为单个向量,需要连接(即c(1:3,5))。这将全部在逗号之前,列指示符1"a"将在逗号之后。因此,df[c(1:3,5), 1]就是您所需要的。

对于替代答案(可能更适合具有更多列的数据框),@ {Mamoun Benghezal建议的df[c(1:3, 5), "a"]也可以完成它!