Я пытаюсь создать функцию, в которой я могу вернуть лучших игроков x для определенной переменной в моем наборе данных. Например, данные состоят из игроков MLB со всеми видами статистики. В моей функции я хочу иметь возможность выбирать любую переменную, например CHits (карьерные успехи), и печатать лучшие 3, 5 или 10. С помощью этой функции такой же я хочу печатать лучших игроков CRBI (карьерные RBI).
Вот мой текущий код.
My_Top_CHits <- function(x)
{y <- Hitters[order(-Hitters$CHits),]
top <- y[1:x,]cat("The Top", x, "MLB Players in 1986 based on Career Hits:")
return(top)}
My_Top_CHits(3)
My_Top_CHits(4)





Работает ли что-то вроде этого:
> My_Top_CHits <- function(df, variable, n) {
+ df %>%
+ arrange(desc(!!as.symbol(variable))) %>%
+ slice(1:n)
+ }
>
> dat <- data.frame(A = c(1,2,3),
+ B = c(10,11,12))
> My_Top_CHits(dat, "A", 2)
A B
1 3 12
2 2 11
Просто добавьте входной параметр для имени статистики столбца и используйте head для первых N строк:
My_Top_Stats <- function(x, col_stat) {
y <- Hitters[order(-Hitters[[col_stat]]),]
top <- head(y, x)
cat("The Top", x, "MLB Players in 1986 based on ", col_stat, " is:")
return(top)
}
My_Top_Stats(3, "CHits")
My_Top_Stats(4, "CRBIs")