Який простий спосіб дізнатись, який клас має кожен стовпець у фреймі даних?
Який простий спосіб дізнатись, який клас має кожен стовпець у фреймі даних?
Відповіді:
Одним із варіантів є використання lapplyта class. Наприклад:
> foo <- data.frame(c("a", "b"), c(1, 2))
> names(foo) <- c("SomeFactor", "SomeNumeric")
> lapply(foo, class)
$SomeFactor
[1] "factor"
$SomeNumeric
[1] "numeric"
Інший варіант str:
> str(foo)
'data.frame': 2 obs. of 2 variables:
$ SomeFactor : Factor w/ 2 levels "a","b": 1 2
$ SomeNumeric: num 1 2
classповертає вектор символів усіх класів, від яких об'єкт успадковує, результатом sapply(foo, class)може бути список, а не завжди вектор символів, як очікувало б більшість людей. Що може бути трохи небезпечним ... Я вважаю lapplyнабагато безпечнішим.
unlist(lapply(foo, class))що зручно для фреймів даних з великою кількістю стовпців.
unlistз lapply- це жахлива ідея, тому що цілком можливо length(class(x))>1 (див. коментарі вище) - sapplyнабагато безпечніше, ніж unlist + lapply. безпечним способом було б sapply(lapply(foo, class), "[", 1)- враховуючи, що foo - це кадр даних
Ви можете просто використовувати lapplyабо sapplyвбудовані функції.
lapplyповерне вам list-
lapply(dataframe,class)
while sapplyприйме найкращий з можливих типів повернення, напр. Вектор тощо -
sapply(dataframe,class)
Обидві команди повернуть вам усі назви стовпців із відповідним класом.
Привіт шукав те саме, і це може бути також
unlist(lapply(mtcars,class))
sapply(foo, class)