R - 查找部分匹配的元组

时间:2013-08-02 01:29:06

标签: r

假设您有一个如下数据框:

column1   column2    column3    column4
   1        124         2          a
   2        125         4          b
   3        124         6          c
   4        126         8          d
   5        150         10         e

如果数据框包含满足仅基于两列的条件的任何元组,那么最有效(即最快)的方法是找出(TRUE / FALSE)?

如果有一个满足条件column1==1 & column2<140 & column2>130的元组,你会如何找出(没有循环)? (当然,在这种情况下,结果必须返回FALSE。)

3 个答案:

答案 0 :(得分:4)

@Tomas指出 - 你几乎就在那里:

any(df$column1==1 & df$column2<140 & df$column2>130)
#[1] FALSE

...或

with(df,any(column1==1 & column2<140 & column2>130))
#[1] FALSE

答案 1 :(得分:2)

几乎与你写的一样:

df[df$column1==1 & df$column2<140 & df$column2>130,]

with(df, df[column1==1 & column2<140 & column2>130,])

答案 2 :(得分:2)

或使用data.tablebetween语法糖:

library(data.table)
DT <- data.table(dat)
DT[column1==1 & column2 %between% c(130,140)]