我对caret
包中提供的机器学习算法生态系统感到好奇,但很快发现自己遇到了将列表转换为数据帧的问题。
我希望构建一个由caret
方法名称,其标签,关联库,类型(分类,回归)和标记组成的数据集。
我的第一步是:
library(caret)
carets <- getModelInfo()
这会将所有caret
模型信息放入一个巨大的命名列表中。我可以通过以下方式获取列表的子元素:
attach(carets)
ada$label
ada$library
ada$type
ada$tags
有没有办法从整个列表中提取该信息?我试过了:
library(data.table)
carets.df <- data.frame(unlist(carets))
carets.df2 <- rbindlist(carets, fill=TRUE)
carets.df3 <- do.call(rbind, Map(data.frame, carets)
carets.df4 <- lapply(carets, function(x) do.call(rbind, x))
无济于事。我觉得我很接近,但我不熟悉列表并以编程方式提取命名元素......
答案 0 :(得分:0)
答案真的源于我对如何找到特定列表元素的无知,但在这种情况下,下面的hacky方式得到了我所追求的:
carets <- getModelInfo()
carets.names <- names(carets)
carets.library <- 0
carets.label <- 0
carets.type <- 0
carets.tags <- 0
for(i in 1:length(carets.names)){
carets.library <- c(carets.library, toString(carets[[i]][["library"]]))
carets.label <- c(carets.label, carets[[i]][["label"]])
carets.type <- c(carets.type, toString(carets[[i]][["type"]]))
carets.tags <- c(carets.tags, toString(carets[[i]][["tags"]]))
}
carets.df <- data.frame(carets.names, carets.library[2:228], carets.label[2:228], carets.type[2:228], carets.tags[2:228])