Bạn biết cách bạn có thể cung cấp một vectơ tên cho một khung dữ liệu để thay đổi tên col hoặc hàng của một khung dữ liệu. Có phương pháp tương tự nào để cung cấp một vectơ tên có làm thay đổi lớp của mỗi cột trong một khung dữ liệu không? Bạn có thể làm điều này khi bạn đọc trong một khung dữ liệu với read.table bằng cách sử dụng colClasses. Còn nếu dataframe được tạo bên trong R thì sao?cung cấp một véc tơ cho "các lớp" của khung dữ liệu
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)
CHỈNH SỬA: Tôi đã thay đổi một cách ngẫu nhiên ở trên để tỏ ra không hợp lý.
EDIT 2: Nếu có một cách để viết một người sử dụng được xác định chức năng đó sẽ đủ cũng
@ Tommy Tôi đã hy vọng cho câu trả lời "Bạn dope đã có một chức năng cơ sở mà không dễ dàng". Chức năng của bạn hoạt động tốt. Tôi sẽ ném nó vào. Của tôi() như là một chức năng thuận tiện cho bản thân mình. Tôi thực sự hơi ngạc nhiên khi nhóm R-core chưa thực hiện một cái gì đó như thế này đặc biệt vì nó có vẻ là một phần của read.table. Cảm ơn bạn. –
@Tyler Tôi đã chia sẻ sự ngạc nhiên của bạn. Tôi đã từ lâu tìm kiếm một chức năng cơ bản để làm điều này, và thường có một số cách tiếp cận quảng cáo hoc trên bay. Sẽ rất tuyệt nếu đội R-core xem xét điều này ở cơ sở. – digitalmaps