Какой ящик подходит к какой корзине, учитывая также приоритетность ящиков и корзин?
df.boxes имеет следующие столбцы:
boxID - имя коробки
boxX - размер коробки в измерении X
boxY - размер коробки в измерении Y
Важность - какой ящик следует назначить корзине первым. как приоритет - 555 самых важных (с самым высоким приоритетом), 111 наименее важных (с самым низким приоритетом)
df.basket имеет следующие столбцы:
basketID - название корзины
basketX - размер корзины в измерении X
basketY - размер корзины в измерении Y
priorityOfSelection - какая корзина должна быть сначала заполнена коробкой. 1 - наивысший приоритет, 7 - наименьший приоритет
, например, box1 не помещается в корзину с наивысшим приоритетом, она же корзина 1, поэтому она перемещается вниз к следующей корзине с priorityOfSelection «2» и сохраняет его имя в новом столбце "коробки" df.basket.
У меня есть, хотя, сначала я упорядочиваю два фрейма данных на основе их "важности", "priorotyOfSelection" и сравниваю размер блоков с размер корзины и, если есть совпадение, я назначаю имя ящика соответствующей корзине. В этом порядке мышления я пытаюсь создать вложенное для -10 * безуспешно, как вы можете видеть.
Может ли кто-нибудь указать, что и где я делаю неправильно, или направить меня на альтернативный подход, который также был бы высоко оценен?
представ
df.boxes <-structure(list(boxID = c("box 1", "box 2", "box 3", "box 4", "box 5"),
boxX = c(600,450, 400, 350, 200),
boxY = c(600, 400, 450, 500, 300),
importance = c(555, 444, 333, 222, 111)
), class = "data.frame", row.names = c(NA, -5L))
df.basket <- structure(list(basketID = c("basket 1", "basket 2", "basket 3","basket 4", "basket 5", "basket 6", "basket 8"),
basketX = c(500,650, 500,200, 450, 500,300),
basketY = c(450,650, 500,300,450,500, 300),
priorityOfSelection = c(1, 2, 3, 4, 5,6,7)
), class = "data.frame", row.names = c(NA, -7L))
попытка:
for (i in 1:nrow(df.boxes)){
for(j in 1:nrow(df.basket)){
df.basket$box[j] <- ifelse((df.boxes$boxX[i] <= df.basket$basketX[j] | df.boxes$boxY[i] <= df.basket$basketX[j]) & (df.boxes$boxX[i] <= df.basket$basketY[j] | df.boxes$boxY[i] <= df.basket$basketY[j]),
df.boxes$boxID[i], "none")
}
}
желаемый вывод:
Спасибо очень за ваше время!