Я пытаюсь использовать sapply, чтобы взять каждый элемент в списке (например, «Гольф», «Малибу», «Корвет») и создать новый список с самым высоким значением в кадре данных, из которого был разбит список (например, автомобили $ SALE_PRICE). Я пытаюсь использовать анонимную функцию для этого, но я не могу заставить эту функцию работать.
Основная проблема в том, что я не очень хорош в написании функций.
Сначала я взял исходный фрейм данных cars и использовал split
для создания списка уникальных имен автомобилей - я назвал это car_names .
Теперь я пытаюсь создать новый список с использованием sapply самой высокой цены продажи для каждого типа автомобиля в списке. Я уверен, что я правильно все начинаю ...
price_list <- sapply(car_names,
... но я не могу на всю жизнь получить анонимную функцию, чтобы просто применить max
ко всем экземплярам каждого названия автомобиля в ценах продажи автомобилей $.
Я пробовал кучу вещей, все из которых вернули ошибку. Вот пример:
price_list <- sapply(car_names, function(x) {
max(cars$saleprice[x])
})
Что возвращает:
Error in h115$nominate_dim1[x] : invalid subscript type 'list'
Я уверен, что это просто, даже для опытных программистов среднего уровня, но я ... не один из них! Я подозреваю, что указываю на что-то неправильно, но не могу пройти мимо. Есть идеи?
Редактировать: Вот воспроизводимый пример.
Во-первых, "исходный" фрейм данных:
cars1 <- data.frame("car_names" = c("Corvette", "Corvette", "Corvette", "Golf", "Golf", "Golf", "Malibu", "Malibu", "Malibu"),"saleprice" = c(32000,45000,72000,7500,16000,22000,33000,21000,26500))
Далее, разделив df по именам машин:
cars1_split <- split(cars1, cars1$car_names)
Теперь, пытаясь передать max
в sapply
и получить ошибку:
maxes <- sapply(cars1_split, function(x){
max(cars1$saleprice[x])
})
Надеюсь, это даст вам, ребята, кое-что для работы!