A very simple solution would be
s1 <- "(3:18) B.Green-Ellis left end to NE 28 for -1 yards (A.Ross)."
ss1 <- strsplit(s1, split = " ")[[1]]
as.numeric(ss1[grep("yards", ss1) -1])
now you just have to put this in a loop and apply to every row, i.e
s1 <- "(3:18) B.Green-Ellis left end to NE 28 for -1 yards (A.Ross)."
s2 <- "(1:07) (No Huddle Shotgun) B.Green-Ellis right guard to NYG 27 for 4 yards (C.Blackburn)."
s3 <- "(14:00) B.Green-Ellis right end pushed ob at NYG 33 for 17 yards (K.Phillips)."
df <- rbind(s1,s2,s3)
splits <- strsplit(df[, 1], split = " ")
sapply(splits, function(z) z[grep("yards", z) - 1])
you can also do this in one step, as @joshua suggested!