¿Cómo agrego filas a un marco de datos usando sapply?

Estoy tratando de agregar filas a un marco de datos dentro de una llamada de función sapply, pero está devolviendo una matriz, mientras que quiero un marco de datos con variables en las columnas y nombres / direcciones en las filas.

Este es un ejemplo trivial que demuestra el problema. Lo estoy haciendo de esta manera para evitar usar un bucle 'for'. ¿Alguien puede enseñarme cómo debería hacer esto?

# initialize and empty data frame
absdf <- data.frame(
    name = character(),
    address = character(), 
    city = character(),
    stringsAsFactors=FALSE)

# a numeric vector. 
idvs <- c(123, 465)

print("initial empty data frame:")
print(absdf)

absdf <- sapply(idvs, function(idv) {

    name <- paste("John Doe", idv)
    address <- "123 Main St."
    city <- "Elmhurst"

    absdf <- rbind(absdf, data.frame(
        name = name, 
        address = address,
        city = city,
        stringsAsFactors=FALSE))

})

# print it out - a sanity check
print("absdf final:")
print(absdf)

Esto es lo que genera:

[1] "initial empty data frame:"
[1] name    address city   
<0 rows> (or 0-length row.names)
[1] "absdf final:"
    [,1]           [,2]          
name    "John Doe 123" "John Doe 465"
address "123 Main St." "123 Main St."
city    "Elmhurst"     "Elmhurst"    

Y finalmente, ¿por qué es una matriz?

> class(absdf)
[1] "matrix"

Respuestas a la pregunta(1)

Su respuesta a la pregunta