我有一个像这样的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?
答案 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"]
也可以完成它!