Как получить элементы с максимальными значениями из списка значений в R - PullRequest
0 голосов
/ 22 января 2020

Привет, у меня есть список значений, и мне нужны только элементы с самым высоким рейтингом ie5. поэтому для списка ниже мне нужны только имена mov ie, которые имеют 5 оценок. Мне не нужны фильмы с рейтингом 2 и 3. Как это сделать в R.

$Movie1
[1] 5

$Movie2
[1] 5

$Movie3
[1] 2

$Movie4
[1] 5

$Movie5
[1] 5

$Movie6
[1] 4

Мне нужен результат как

Movie1  Movie2  Movie4   Movie6
5         5       5        5

1 Ответ

0 голосов
/ 22 января 2020

Первым шагом будет удаление списка из списка, затем индексирование имен mov ie для тех, кто имеет максимальные рейтинги, а затем сохранение их в кадре данных. Поскольку вы на самом деле не предоставили вариант использования, трудно точно понять, почему вы хотите использовать формат, который вы делаете, но я надеюсь, что есть кое-что для начала.

my_list <- list(movie1 = 5,    # a mock movie list
                movie2 = 5,
                movie3 = 2,
                movie4 = 5,
                movie5 = 4)


new <- do.call(rbind, my_list) # unlisting the elements into a df


t(
  data.frame( 
    movie = row.names(new)[new == max(new)],   # here we store row names of max rows
    num = max(new))                            # here we provide the max rating
  )                                            # finally, transpose `t()`

Надеюсь, это поможет. В качестве альтернативы, вы можете сделать это, чтобы получить нужный вывод букв из аналогичного списка:

my_list <- list(movie1 = 5,    # a mock movie list
                movie2 = 5,
                movie3 = 2,
                movie4 = 5,
                movie5 = 4)


new <- do.call(rbind, my_list) # unlisting the elements into a df

movie_names <- row.names(new)[new == max(new)]  # store all the movie names that have max rating
rep_num <- max(new)                             # store max rating (to pass to rep and eventually table
len <- length(movie_names)                      # len to pass to seq_len

table(sapply(seq_len(len), function(i){rep(movie_names[i], rep_num)})) # then finally create a function to repeat the movie name for the max rating and create a table from it. 

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...