Wiesz, w jaki sposób możesz dostarczyć wektor nazw do ramki danych, aby zmienić nazwy kolumn lub wierszy w ramce danych. Czy istnieje podobna metoda dostarczania wektora nazw, które zmieniają klasę każdej kolumny w ramce danych? Możesz to zrobić, gdy czytasz w ramce danych z read.table przy użyciu colClasses. Co się stanie, jeśli ramka danych zostanie utworzona wewnątrz R?dostarcza wektor do "klas" ramki danych
DF <- as.data.frame(matrix(rnorm(25), 5, 5))
str(DF) #all numeric modes
names(DF) <- c("A", "A2", "B", "B2", "Z") #I want something like this for classes
some_classes_function_like_names(DF) <- c(rep("character", 3), rep("factor", 2))
#I can do it like this but this seems inefficient
DF[, 1:3] <- lapply(DF[, 1:3], as.character)
DF[, 4:5] <- lapply(DF[, 4:5], as.factor)
str(DF)
EDYCJA: Zmieniłem sapply powyżej na lapply jak sapply nie ma sensu.
EDIT 2: Jeżeli istnieje sposób, aby napisać użytkownika określoną funkcję, która wystarczyłaby także
@ Tommy Miałem nadzieję na odpowiedź: "You nuy jest już podstawową funkcją, która robi to łatwo". Twoje funkcje działają dobrze. Wrzucę to do mojej .First() jako funkcji wygody dla siebie. Jestem trochę zaskoczony, że zespół R-core nie wdrożył już czegoś takiego, zwłaszcza, że wydaje się być częścią read.table. Dziękuję Ci. –
@Tyler Dzielę się twoją niespodzianką. Od dawna poszukiwałem funkcji bazowej, aby to osiągnąć i zazwyczaj podejmuję pewne działania ad hoc w locie. Byłoby wspaniale, gdyby zespół R-core rozważył to w bazie. – digitalmaps