В R, скажем, у нас есть вектор
area = c(rep(c(26:30), 5), rep(c(500:504), 5), rep(c(550:554), 5), rep(c(76:80), 5))
и еще один вектор yield = c(1:100)
.
Теперь, скажем, я хочу индексировать вот так:
> yield[area==27]
[1] 2 7 12 17 22
> yield[area==501]
[1] 27 32 37 42 47
Нет проблем,право?Но странные вещи начинают происходить, когда я пытаюсь проиндексировать это с помощью c(A, B)
.(и даже более странно, когда я пытаюсь c(min:max)
...)
> yield[area==c(27,501)]
[1] 7 17 32 42
Я ожидаю, конечно, случаи, которые присутствуют в обоих других примерах, а не просто какая-то странная комбинация их,Это работает, когда я могу использовать оператор ИЛИ канала:
> yield[area==27 | area==501]
[1] 2 7 12 17 22 27 32 37 42 47
Но что, если я работаю с диапазоном?Скажите, я хочу индексировать его по диапазону c(27:503)
?В моем реальном примере есть гораздо больше точек данных и диапазонов, поэтому имеет больше смысла, пожалуйста, не предлагайте делать это вручную, что по сути означает:
yield[area==27 | area==28 | area==29 | ... | area==303 | ... | area==500 | area==501]
Должно быть лучшееспособ ...