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 lapply
và 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
class
trả 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 lapply
an 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.
unlist
với lapply
là một ý tưởng khủng khiếp vì có thể length(class(x))>1
(xem các nhận xét ở trên) - sapply
an 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 lapply
hoặc các sapply
chức năng nội trang.
lapply
sẽ trả lại cho bạn một list
-
lapply(dataframe,class)
trong khi sapply
sẽ 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)