8

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

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

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

4

1 回答 1

13

使用drop选择函数的参数:

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

#   col1
#r3    3
#r4    4
#r5    5

来自文档[

降低

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

于 2012-08-23T11:56:46.097 回答