将列表数据从插入符号拉入数据帧

时间:2017-02-28 00:18:55

标签: r r-caret

我对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))

无济于事。我觉得我很接近,但我不熟悉列表并以编程方式提取命名元素......

1 个答案:

答案 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])