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

Kyl*_*ndt 66 r

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

Kyl*_*ndt 76

一种选择是使用lapplyclass.例如:

> foo <- data.frame(c("a", "b"), c(1, 2))
> names(foo) <- c("SomeFactor", "SomeNumeric")
> lapply(foo, class)
$SomeFactor
[1] "factor"

$SomeNumeric
[1] "numeric"
Run Code Online (Sandbox Code Playgroud)

另一种选择是str:

> str(foo)
'data.frame':   2 obs. of  2 variables:
 $ SomeFactor : Factor w/ 2 levels "a","b": 1 2
 $ SomeNumeric: num  1 2
Run Code Online (Sandbox Code Playgroud)

  • 也是'sapply(foo,class)` (18认同)
  • 由于`class`返回一个对象继承的_all_ classes的字符向量,`sapply(foo,class)`的输出可能是一个列表,并不总是大多数人所期望的字符向量.这可能有点危险......我发现'lapply`更安全. (7认同)
  • `unlist` 和 `lapply` 是一个糟糕的主意,因为 `length(class(x))&gt;1` 有可能(参见上面的注释)——`sapply` 比 `unlist + lapply` 安全得多。一个安全的方法是 `sapply(lapply(foo, class), "[", 1)` - 考虑到 foo 是一个数据框 (2认同)

小智 14

您可以简单地使用lapplysapply内置函数.

lapply会回报你list-

lapply(dataframe,class)
Run Code Online (Sandbox Code Playgroud)

虽然sapply将采取最好的回报类型ex.矢量等 -

sapply(dataframe,class)
Run Code Online (Sandbox Code Playgroud)

这两个命令都会返回所有列名及其各自的类.