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