如何在 R 中返回库的多个对象?

Posted

技术标签:

【中文标题】如何在 R 中返回库的多个对象?【英文标题】:How to return multiple objects of a library in R? 【发布时间】:2015-09-10 08:25:33 【问题描述】:

我在 R 中使用 rpart 库。在一个函数中,我想返回一个在 for 循环中生成的 rpart 对象数组。但是,我不知道应该使用哪种数据结构来存储 rpart 对象。每个 rpart 对象都有许多值。下面你可能会看到生成 rpart 对象的代码:

rpart.fit <- rpart(result ~ . , data = this.data , 
               subset = train.index, method= "class", 
               control=rpart.control(maxdepth=1))

【问题讨论】:

您可以使用列表来存储多个对象。 【参考方案1】:
library(rpart)

this.data <- data.frame(result = runif(20), var = runif(20))

foo <- function(data)
        aa <- list()
        for(i in 1:10)
                aa[[paste("model", i, sep="")]] <- rpart(result ~ var , data = this.data)

        
        aa


bar <- foo(this.data)

plot(bar$model1)
plot(bar$model5)

编辑:更新函数以动态计算模型名称。

【讨论】:

这里的问题是我有 50 个模型,不可能在 for 循环中创建一个字符串(如“model1”)并为其分配一个 rpart 对象。甚至,模型的数量也是可变的。 当我将模型属性用于列表时,我收到此错误:no applicable method for 'predict'应用于类“list”的对象,其中 predict 是我使用 rpart 模型作为参数的函数。 @Pegah,您注意到的错误可能来自尝试在列表本身而不是列表的 elements 上使用 predict 函数,其中每个元素都是rpart 对象。如果yourListrpart 对象的列表,那么predict(yourList[[2]]) 将在第二个rpart 对象上给出predict 的结果,例如。 我还是属性的问题。如何为属性创建名称并为其分配 rpart 对象?在for 循环中,如何将modelX 连接到我的list t 次,而每次使用不同的模型属性名称? rlist &lt;- c(rlist, modelX=rpart) 如果你使用 paste() 来制作字符串,你可以在 for 循环中使用 "rlist[[string]]

以上是关于如何在 R 中返回库的多个对象?的主要内容,如果未能解决你的问题,请参考以下文章

R用户定义函数,返回多个类型对象

如何在R中返回多个变量

如何等待多个可观察流解决并一起返回它们

如何在具有多个字符串的数组列表中搜索对象并返回对象?

如何在 django 的 AJAX 请求中返回多个 JSON 对象

如何在 Scala 中使用 Spark SQL 返回多个 JSON 对象