Cách dễ dàng để tìm ra lớp mỗi cột trong khung dữ liệu là gì?
Cách dễ dàng để tìm ra lớp mỗi cột trong khung dữ liệu là gì?
Câu trả lời:
Một tùy chọn là sử dụng lapplyvà class. Ví dụ:
> foo <- data.frame(c("a", "b"), c(1, 2))
> names(foo) <- c("SomeFactor", "SomeNumeric")
> lapply(foo, class)
$SomeFactor
[1] "factor"
$SomeNumeric
[1] "numeric"
Một lựa chọn khác là str:
> str(foo)
'data.frame': 2 obs. of 2 variables:
$ SomeFactor : Factor w/ 2 levels "a","b": 1 2
$ SomeNumeric: num 1 2
classtrả về một vectơ ký tự của tất cả các lớp mà một đối tượng kế thừa, đầu ra của sapply(foo, class)có thể là một danh sách và không phải lúc nào cũng là một vectơ ký tự như hầu hết mọi người mong đợi. Có thể có một chút nguy hiểm ... Tôi thấy lapplyan toàn hơn rất nhiều.
unlist(lapply(foo, class))điều này rất tiện lợi với các khung dữ liệu có nhiều cột.
unlistvới lapplylà một ý tưởng khủng khiếp vì có thể length(class(x))>1 (xem các nhận xét ở trên) - sapplyan toàn hơn rất nhiều so với unlist + lapply. một cách an toàn sẽ được sapply(lapply(foo, class), "[", 1)- cho rằng foo là một khung dữ liệu
Bạn có thể đơn giản sử dụng lapplyhoặc các sapplychức năng nội trang.
lapplysẽ trả lại cho bạn một list-
lapply(dataframe,class)
trong khi sapplysẽ lấy loại trả lại tốt nhất có thể ex. Vectơ vv -
sapply(dataframe,class)
Cả hai lệnh sẽ trả về cho bạn tất cả các tên cột với lớp tương ứng của chúng.
Xin chào đã tìm kiếm giống nhau, và nó cũng có thể
unlist(lapply(mtcars,class))
sapply(foo, class)