假设您有一个如下数据框:
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
。)
答案 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.table
和between
语法糖:
library(data.table)
DT <- data.table(dat)
DT[column1==1 & column2 %between% c(130,140)]