데이터 프레임에있는 모든 열의 클래스를 가져 오는 방법은 무엇입니까?


85

데이터 프레임의 각 열이 어떤 클래스인지 쉽게 알 수있는 방법은 무엇입니까?

답변:


91

한 가지 옵션은 lapplyclass. 예를 들면 :

> 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

20
또한sapply(foo, class)
MYaseen208

9
객체가 상속받은 모든 클래스의 class문자형 벡터를 반환하기 때문에 의 출력은 대부분의 사람들이 예상하는 문자형 벡터가 아닌 목록 일 수 있습니다. 조금 위험 할 수 있습니다 ... 훨씬 더 안전하다고 생각합니다. sapply(foo, class)lapply
flodel

1
더 나은 가독성을 위해 나는 제안한다 : unlist(lapply(foo, class))이것은 많은 열이있는 데이터 프레임에 편리하다.
p130ter

1
unlistlapply그 가능성이 있기 때문에 끔찍한 생각이다 length(class(x))>1 (위의 설명 참조) - sapply보다 훨씬 안전합니다 unlist + lapply. 안전한 방법이 될 것이다 sapply(lapply(foo, class), "[", 1)- 푸 데이터 프레임 주어진
lebatsnok

27

lapply또는 sapply내장 함수를 간단하게 사용할 수 있습니다 .

lapply당신에게 list-

lapply(dataframe,class)

동안은 sapply최선의 반환 형식의 예를 취할 것입니다. 벡터 등-

sapply(dataframe,class)

두 명령 모두 해당 클래스와 함께 모든 열 이름을 반환합니다.



0

가족 기능 purrr과 유사한 다음을 사용할 수도 있습니다 apply.

as.data.frame(purrr::map_chr(mtcars, class))
purrr::map_df(mtcars, class)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.