Я новичок в функциях R, всегда предпочитаю использовать пакеты и избегать циклов. Однако теперь я пытаюсь создать цикл для конкретного вопроса, который у меня есть. Я хотел бы подмножить набор данных, основанный на диапазонах. Я думаю, что приведенный ниже код является самоочевидным.Использование подмножества() для выбора диапазонов данных
dt = as.data.frame(sample(1:100))
names(dt) = "num"
subs.it <- function(x) {
subs <- subset(dt, num >= (x - 5) & num <= (x + 5))
return(subs)
}
subs.it(c(15, 50))
неправильный выход:
num
44 55
47 20
65 19
77 17
83 12
91 16
92 51
100 54
правильно:
num
4 15
18 11
47 20
50 13
54 10
65 19
66 14
77 17
82 18
83 12
91 16
17 48
19 53
29 45
33 52
39 46
44 55
45 50
49 49
89 47
92 51
100 54
Я не могу найти то, что я делаю неправильно.
Благодаря
Вы по существу запрашиваете все 'x> = c (10,45) & x <= c (20,55)', что просто бессмысленно с точки зрения R. Возможно, вы имеете в виду наличие двух условий, к которым присоединяется «или», например '(x> = ... & x <= ...) | (x> = ... & x <= ...) '? – joran
Что вы предлагаете делать? – klo
для подмножества набора данных на основе диапазонов. У меня будет более одного номера. Например, когда число от 15 до подмножества от 10 до 20 и число от 50 до подмножества от 45 до 55. Окончательный набор данных должен иметь диапазоны чисел от 10 до 20 и от 45 до 55. – klo