Используйте переменную some в наборе данных файла csv в функции, чтобы вернуть любую переменную в наборе данных - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь создать функцию, в которой я могу вернуть топ-х игроков для определенной переменной в моем наборе данных.Например, данные состоят из игроков MLB со всеми видами статистики.В моей функции я хочу иметь возможность выбрать любую переменную, например CHits (Career Hits) и напечатать верхнюю 3, 5 или 10. С помощью этой такой же функции я хочу напечатать верхнююигроки CRBIs (Карьера RBIs).

Вот мой текущий код.

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)

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Просто добавьте входной параметр для имени статистики столбца и используйте 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")
0 голосов
/ 05 марта 2019

Делает что-то вроде этой работы:

> 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...