There are several ways you can do this. Here is one starting with concat.split.multiple from my "splitstackshape" package:
## SAMPLE DATA
mydf <- data.frame(ID = LETTERS[1:3], vals = c("700-800", "600-750", "100-220"))
mydf
#   ID    vals
# 1  A 700-800
# 2  B 600-750
# 3  C 100-220
First, split the "vals" column, rename them if required (using setnames), and add a new column with the rowMeans.
library(splitstackshape)
mydf <- concat.split.multiple(mydf, "vals", "-")
setnames(mydf, c("vals_1", "vals_2"), c("min", "max"))
mydf$mean <- rowMeans(mydf[c("min", "max")])
mydf
#   ID min max mean
# 1  A 700 800  750
# 2  B 600 750  675
# 3  C 100 220  160
For reference, here's a more "by-hand" approach:
mydf <- data.frame(ID = LETTERS[1:3], vals = c("700-800", "600-750", "100-220"))
SplitVals <- sapply(sapply(mydf$vals, function(x) 
  strsplit(as.character(x), "-")), function(x) {
    x <- as.numeric(x)
    c(min = x[1], mean = mean(x), max = x[2])
  })
cbind(mydf, t(SplitVals))
#   ID    vals min mean max
# 1  A 700-800 700  750 800
# 2  B 600-750 600  675 750
# 3  C 100-220 100  160 220