我正在努力如何在R中获得一个函数的输出,我正在创建一个元素列表。显然这很简单,然而,我不能深入研究。我在SO中检查了不同的问题,但没有结果。这可能是一个简单的问题,可能我打印错了一些行。
我创建的函数的输出有三个元素,我认为它们应该包含在一个列表中:
- 线性判别分析模型(lda)。
- dataframe
- ggplot图像
这是我正在使用的函数的版本:
fun <- function(data, tooth_type = c("m1", "m2", "m3"), position = c("U", "L")) {
model <- lda(Species ~ MD + BL, data = data)
# extract the information of the tooth we are working from the Omo database
tooth <- omo_numeric_mdbl[omo_numeric_mdbl$Tooth == tooth_type & omo_numeric_mdbl$Position == position, ]
tooth <- tooth[complete.cases(tooth[, 31:32]), ]
predictions <- model %>%
predict(tooth)
pred <- as.data.frame(predictions$posterior)*100
# plot
lda.data <- cbind(data, predict(model)$x)
ggplot_fun <- ggplot(lda.data, aes(LD1, LD2)) +
geom_point(aes(color = Species))
list(model, pred, ggplot_fun)
}
如您所见,在函数中有三个我想存储的对象:
pred
:这是数据帧model
:这是lda信息ggplot_fun
:这是ggplot图像
我试着:
as.list(model, pred, ggplot_fun)
->不成功的list(model, pred, ggplot_fun)
->不成功的x <- as.list(model, pred, ggplot_fun); return(x)
->不成功的x <- list(model, pred, ggplot_fun); return(x)
->不成功的
最后,我想要的是:
x <- fun(data, "m3", "L") # for example
x$pred # show the dataframe (and display as kable, if required)
x$model # show the lda model, and to get all the details inside as x$model$posterior
x$ggplot_fun # display the ggplot function
我终于解决了问题。为了给其他有同样问题的人提供答案,我更改了示例的最后一行:
list(model, pred, ggplot_fun)
By this
list(LDA = model, Prediction = pred, Ggplot = ggplot_fun)
基本上我给每个元素命名了。