一种简单的方法来找出数据框中的每一列是什么类?
一种简单的方法来找出数据框中的每一列是什么类?
Answers:
一种选择是使用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
withlapply
是一个可怕的主意,因为length(class(x))>1
(参见上面的评论)-可能sapply
比更加安全unlist + lapply
。一个安全的办法是sapply(lapply(foo, class), "[", 1)
-因为foo是一个数据帧
您可以简单地使用lapply
或sapply
内置函数。
lapply
会给你一个list
-
lapply(dataframe,class)
而sapply
将采用最佳返回类型ex。矢量等-
sapply(dataframe,class)
这两个命令都将为您返回所有列名称及其各自的类。
您好正在寻找相同的商品,也可能是
unlist(lapply(mtcars,class))
sapply(foo, class)