は、私は、次の間隔のいずれかに属するx
、サブセットdata.frame組合、複数の間隔は
intervals <- list(c(0.2, 0.8), c(1, 2), c(8, 8.2))
test <- function(range, x){
which(x >= range[1] & x <= range[2])
}
d[Reduce(`union`, lapply(intervals, test, x=d$x)), ]
に基づいてサブセットを希望する次data.frame
、
d <- data.frame(x = seq(0, 10, length=100), value = rnorm(100))
を考えてみましょう、テスト機能は思わ冗長で、組み込みのfindInterval
のように見えますが、私はそれを使用するエレガントな方法を見つけることができません。
condition <- Reduce(`|`, lapply(lapply(intervals, findInterval,
x=d$x, all.inside=FALSE), `==`, 1))
d[condition, ]
あなたはより良い提案することはできますか?
ありがとうございますが、「カット」は過度のように感じますか? – baptiste
@baptiste OK、 'findInterval'ソリューションを追加しました – James
いいです、それはまた' Reduce'の 'for'ループの必要性を取り除きます – baptiste