jak zapobiec klasyfikowaniu kolumn Dataframe jako znaków zamiast liczb

Dzień dobry.

Przechodzę przez niektóre dane, budując ramkę danych, gdy idę. Za każdym razem, gdy dodaję lub zastępuję wiersz w ramce danych, wartości liczbowe są klasyfikowane jako znak i muszę je ponownie klasyfikować. Zakładam, że robię coś nie tak podczas dodawania danych do ramki danych?

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  

Konwertuj kolumny numeryczne na numeryczne:

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  

Zatem ramka danych jest teraz taka, jak się tego spodziewam - 1 kolumna danych znakowych i 2 cyfry. Jeśli jednak ponownie zmienię jeden z wierszy:

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  

wrócił do wszystkich postaci!

Czy jest jakiś sposób, aby upewnić się, że kiedy dołączam / zmieniam dane w ramce danych, zachowuje odpowiednie klasy?

Dzięki, Pete

questionAnswers(3)

yourAnswerToTheQuestion