如何在 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
对象。如果yourList
是rpart
对象的列表,那么predict(yourList[[2]])
将在第二个rpart
对象上给出predict
的结果,例如。
我还是属性的问题。如何为属性创建名称并为其分配 rpart
对象?在for
循环中,如何将modelX
连接到我的list
t 次,而每次使用不同的模型属性名称? rlist <- c(rlist, modelX=rpart)
如果你使用 paste() 来制作字符串,你可以在 for 循环中使用 "rlist[[string]]
以上是关于如何在 R 中返回库的多个对象?的主要内容,如果未能解决你的问题,请参考以下文章