2016-03-10 3 views
0

Предположим, у меня есть следующий кадр данных:Номер находится между двумя колоннами кадра данных

df <- data.frame(c(1, 2, 1, 5), c(12, 8, 5, 11)) 
names(df) <- c('x', 'y') 
df 

    x y 
1 1 12 
2 2 8 
3 1 5 
4 5 11 

У меня есть несколько, скажем 11. Для каждой строки мне нужен вектор, который сгенерирован таким образом, что если выдается x <= 11 <= y, TRUE. В этом случае

[1] TRUE FALSE FALSE TRUE 

- желаемый выход.

Существует очевидный способ сделать это: петли. Но, насколько я знаю, люди, которые хороши в R ненавижу for петли. Есть ли способ сделать это, не используя for? Я думал о том, возможно, используя apply, но я не знаю, как включить двойное неравенство для аргумента FUN.

+6

Вам нужен '&' оператор т.е. 'с (Д.Ф., х <= 11 & 11 <= у)' ' – akrun

+0

@ akrun Спасибо, не стесняйтесь публиковать это как ответ, и я могу присуждать баллы! Я не очень хорошо знаком с 'with', и это было проблемой. – Clarinetist

+0

@Clarinetist Все в порядке. Вы можете опубликовать это как ответ с некоторыми пояснениями. – akrun

ответ

0

Используйте логический оператор (&), чтобы проверить оба условия одновременно

(df$x<=11) & (df$y>=11) 
+0

Это было опубликовано как час назад в комментариях. –

Смежные вопросы