找出数据框中每列的哪个类是一种简单的方法?
答案 0 :(得分:68)
一种选择是使用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
答案 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"