过滤单列数据帧

时间:2012-08-23 11:50:01

标签: r dataframe

我正在尝试过滤只有一列的数据框。这导致向量返回如下:

single.c <- data.frame(col1=c(1,2,3,4,5), row.names=C("r1","r2","r3","r4","r5"))
single.c[single.c$col1 > 2,]

[1] 3 4 5

我真正想要的是返回的数据与多列数据帧一样:

multi.c <- data.frame(col1=c(1,2,3,4,5), col2=c(1,2,3,4,5), row.names=c("r1","r2","r3","r4","r5"))
multi.c[multi.c$col2 > 2,]

   col1 col2
r3    3    3
r4    4    4
r5    5    5

我可以看到,如果没有其他列,返回向量是有意义的,但通常我想看看哪些行也给出了结果。为什么会发生这种情况,是否有一种简单的方法可以保持结果中的数据框形状,包括rownames?

1 个答案:

答案 0 :(得分:11)

使用drop参数选择函数:

single.c[single.c$col1 > 2, ,drop=F]

#   col1
#r3    3
#r4    4
#r5    5

来自[的文档:

  

放弃

     

对于矩阵和数组。如果为TRUE,则结果强制为最低   可能的维度(参见示例)。这仅适用于提取   元素,不是为了替换。有关详细信息,请参阅drop。