There are a couple of things going on here. First, as @Yarnabrina mentioned, you need to provide top_n with the column to use for ranking. In your case, it would be (assuming you want the top 10 rows based on individual_score):
highest_individual_score <- innings%>%
group_by(match_id, batsman)%>%
summarize(individual_score = sum(batsman_runs))%>%
top_n(10, individual_score)
However, that will probably give you more than 10 rows, because your data are grouped by match after the summarize step. With grouped data, top_n will return the top 10 for each group. If you want the top 10 rows of the overall data frame then ungroup first:
highest_individual_score <- innings%>%
group_by(match_id, batsman)%>%
summarize(individual_score = sum(batsman_runs))%>%
ungroup %>%
top_n(10, individual_score)
Or, with your original code, since you've sorted the data frame, you could do:
highest_individual_score <- innings%>%
group_by(match_id, batsman)%>%
summarize(individual_score = sum(batsman_runs))%>%
arrange(desc(individual_score)) %>%
ungroup %>%
slice(1:10)
@Yarnabrina's method of using head works as well. However, this might in general give unexpected results (within the tidyverse), because head doesn't respect grouping.