Первым шагом будет удаление списка из списка, затем индексирование имен 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.