【发布时间】:2014-05-28 13:25:15
【问题描述】:
我正在我的 R 应用程序中训练多个 SVM,并且我希望我的函数返回一个持有者对象,以便稍后在函数中轻松访问它们中的每一个。
SVM 是这样创建的:
svm.model <- svm(x=trainset,y=trainlabels)
svm.pred <- predict(svm.model,testset)
res <- table(pred = svm.pred, true = testlabels)
我希望能够返回名为“res”的表,或者同时返回 svm.model 和 svm.pred。任何人都会做。
在面向对象的语言中,我会使用 Java ArrayList 之类的东西来执行此操作,但是常规列表(在许多帖子中都建议过)并没有起到作用。我无法输入任何这些值,如果我做到了,它们就会“解开”并失去其结构。
更新 评论部分的要点是关于我究竟是如何尝试使用列表来做到这一点的。我做了以下事情:
result<-list()
for i in...
result[i]<-svm.model
result[i+1] <-svm.pred
我已经尝试过与上面相同的方法,但使用“res”(表格)。
我尝试的另一种方法是每次都使用前一个列表创建一个新列表: 结果
它只给了我一个长度为 3 的列表(我明白为什么),最后两个值是“列表”而不是它们实际上的值,因此它不允许我调用“table(pred = svm. pred, true = testlabels)" 因为它返回一个错误:
"sort.list(y) 中的错误:'x' 对于 'sort.list' 必须是原子的 您是否在列表中调用了“排序”?”
【问题讨论】:
-
list是执行此操作的 方式。看看有多少 R 函数返回lists(或本质上是带有附加结构的lists 的类)。如果list“没有完成它的工作”,那么如果您可以发布一个可重现的示例来说明究竟是什么不起作用,那就太好了。
标签: r return svm return-type