2013-02-25 69 views
4

我已浏览了本网站上的现有子集Q & A,无法完全找到我正在寻找的内容。基于应用于多列的单个条件的子集数据框

我想基于一个条件(例如,如果该值低于5)子集数据框。但是,我只想要所有列中的值低于5的行。

例如使用iris数据集 - 我想选择列1-3都低于5的所有行。

subdata <- iris[which(iris[,1:3]<5),] 

这不适合我。我在子集数据的底部获得大量的NA行。

任何帮助非常感谢!

回答

10

尝试

subdata <- iris[apply(iris[,1:3] < 5, 1, all),] 
+0

出于兴趣,什么是'1'之间做'<5'和'all'? – JPD 2013-02-25 13:58:19

+2

它告诉'apply'为'iris [,1:3] <5'的每一行运行'all'(基本上是一个逻辑与)。参见'apply' - 它在'R'中非常有用。 – QkuCeHBH 2013-02-25 14:02:11