Here's one approach:
# extract data
tab <- summary(mlogit.ds)$CoefTable[, c(1, 4)]
# find values of outcome variable
ind <- sub("^(\\w+):.*", "\\1", rownames(tab))
# create table
mlogit_table <- do.call(cbind, split(as.data.frame(tab), ind))
# change row names
rownames(mlogit_table) <- sub("^(\\w+:)", "", rownames(mlogit_table))
The result:
red.Estimate red.Pr(>|t|) yellow.Estimate yellow.Pr(>|t|)
(intercept) -1.9697934 0.3301242 -4.4497945 0.19866621
value2 5.7087164 0.1550275 8.7793979 0.09833026
value1 -0.0838299 0.8377691 -0.4767750 0.29019742
factor1B -0.3583036 0.8447884 0.1671317 0.94356618