Given a dataframe in R, how can you find the index of the maximum value across multiple columns (excluding NAs) and also the column name of the index of the maximum value across the columns.

You can use which.max with apply to get the column number where you find the first max. This can be used in colnames to get the name of this column.
x$indexOfMax <- apply(x, 1, which.max)
x$colName <- colnames(x)[x$indexOfMax]
x
# Red Blue Yellow Green Purple indexOfMax colName
#1 5 8 10 3 NA 3 Yellow
#2 3 7 2 NA 1 2 Blue
#3 3 NA NA 2 8 5 Purple
Data:
x <- data.frame(Red=c(5,3,3), Blue=c(8,7,NA), Yellow=c(10,2,NA)
, Green=c(3,NA,2), Purple=c(NA,1,8))