At the simplest level all you want to do is add a vector to a data.frame as a column. Since your prediction vector has fewer elements than your data.frame has rows, you need to ensure you are pairing the right prediction to the right data...
Here is a simple example which will illustrate what is happening:
df <- data.frame(y = 1:3, x = c(1, NA, 3))
z <- c(1, 3)
df$z <- z # error
df[!is.na(df$x), "z"] <- z # no error
So, what we've done is to simply insert into a subset of the the data.frame. By selecting only those rows for which x was not NA, we made sure the number of rows selected on the left matched the number of elements on the right. If you have multiple predictors you would need to to have no NA values in any of the columns for that row to be assigned a predicted value. Thankfully R has a simple function to help with that. You can do,
df[complete.cases(df), "z"] <- z