cómo evitar que las columnas de marcos de datos se clasifiquen como caracteres en lugar de numéricas

Buenos días.

Estoy haciendo un ciclo a través de algunos datos, construyendo un marco de datos a medida que avanzo. Cada vez que agrego o reemplazo una fila en el marco de datos, los valores numéricos se clasifican como caracteres y tengo que volver a clasificarlos. ¿Asumo que estoy haciendo algo mal al agregar los datos al marco de datos?

test.df<-data.frame(SIDE=rep("",5),n=rep(NA, 5),c1=rep(NA,5),stringsAsFactors=FALSE)
test.df[1,]<-cbind("A",1,256)
test.df[2,]<-cbind("A",2,258)
test.df[3,]<-cbind("A",3,350)
test.df[4,]<-cbind("A",4,400)
test.df[5,]<-cbind("A",5,360)
summary(test.df)
 SIDE                n                  c1           
  Length:5           Length:5           Length:5          
  Class :character   Class :character   Class :character  
  Mode  :character   Mode  :character   Mode  :character  

Convertir las columnas numéricas a numéricas:

test.df[, c(2:3)] <- sapply(test.df[, c(2:3)], as.numeric)
summary(test.df)
 SIDE                 n           c1       
 Length:5           Min.   :1   Min.   :256.0  
 Class :character   1st Qu.:2   1st Qu.:258.0  
 Mode  :character   Median :3   Median :350.0  
                    Mean   :3   Mean   :324.8  
                    3rd Qu.:4   3rd Qu.:360.0  
                    Max.   :5   Max.   :400.0  

Así que el marco de datos es ahora como lo espero: 1 columna de datos de caracteres y 2 de números. Sin embargo si vuelvo a cambiar una de las filas:

test.df[5,]<-cbind("A",5,360)
summary(test.df)
 SIDE                n                  c1           
 Length:5           Length:5           Length:5          
 Class :character   Class :character   Class :character  
 Mode  :character   Mode  :character   Mode  :character  

¡Ha vuelto a todo el carácter!

¿Hay alguna forma de garantizar que cuando agregué / cambié datos en el marco de datos que conserva las clases apropiadas?

Gracias pete

Respuestas a la pregunta(3)

Su respuesta a la pregunta