如何获取数据框中所有列的类?

时间:2012-05-18 23:59:04

标签: r

找出数据框中每列的哪个类是一种简单的方法?

5 个答案:

答案 0 :(得分:68)

一种选择是使用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

答案 1 :(得分:9)

您可以简单地使用InnerException = {System.Net.Http.WinHttpException (0x80072EE2): The operation timed out at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Threading.Tasks.RendezvousAwaitable`1.GetResult() at System.Net.Http.WinHttpHandler.<StartRequest... lapply内置函数。

sapply将为您返回lapply-

list

lapply(dataframe,class) 将采用最好的返回类型ex。矢量等-

sapply

这两个命令都将为您返回所有列名称及其各自的类。

答案 2 :(得分:1)

你好在寻找相同的东西,也可能是

unlist(lapply(mtcars,class))

答案 3 :(得分:0)

您也可以使用purrr,这类似于apply系列功能:

as.data.frame(purrr::map_chr(mtcars, class))
purrr::map_df(mtcars, class)

答案 4 :(得分:0)

我想要的输出比上面使用lapply得到的答案更好,因此这是一个较小的函数。

# Example data
df <-
    data.frame(
        w = seq.int(10),
        x = LETTERS[seq.int(10)],
        y = factor(letters[seq.int(10)]),
        z = seq(
            as.POSIXct('2020-01-01'),
            as.POSIXct('2020-10-01'),
            length.out = 10
        )
    )

# Function returning compact column classes
col_classes <- function(df) {
    t(as.data.frame(lapply(df, function(x) paste(class(x), collapse = ','))))
}

# Return example data's column classes
col_classes(df)
  [,1]            
w "integer"       
x "character"     
y "factor"        
z "POSIXct,POSIXt"