-1

我对使用 R Shiny 很陌生。我正在尝试创建一个有助于在预定数据集上创建 RandomForest 模型的应用程序。

然而,我已经陷入了模型的困境。计划是基于 UI 侧的复选框和单选按钮创建模型。但是,该模型仅在这些元素没有反应时才有效。所以
rfmodel <- randomForest(ADJOE ~ TOR, data=df_train, mtry=5) 工作正常。但 rfmodel <- randomForest(input$outcome ~ TOR, data=df_train, mtry=5)没有。错误是:可变长度不同(为“TOR”找到)。

input$outcome 应该与 ADJOE 完全相同。作为测试,我还使用 input$outcome 变量对我也用来生成模型的 train_data 进行子集化,使用以下代码

names <- colnames(df_valid)
testsubset <- names[names %in% input$outcome]
df_train <- df_train[testsubset] 效果很好。

在这种情况下,我根本不知道 input$outcome 与 ADJOE 有何不同。

我获取结果变量的代码是:

radioButtons("outcome", "Outcome Variable",

choices = c("ADJOE", "ADJDE", "EFG_O", "EFG_D", "TOR", "TORD", "FTR", "FTRD", "X2P_O", "X2P_D", "X3P_O", "X3P_D"), selected = "ADJOE"),

我创建模型的代码是: rfmodel <- randomForest(input$outcome ~ TOR, data=df_train, mtry=5)

使用精简版的大学篮球数据集:https ://www.kaggle.com/andrewsundberg/college-basketball-dataset

这是使用修剪下来的 df <- csv[,c(5,6, 8:11, 14:19)]

我将不胜感激任何有关此问题的帮助。

4

2 回答 2

0

您可以使用reformulate.

rfmodel <- randomForest(reformulate('TOR', input$outcome), data=df_train, mtry=5)
于 2021-06-20T04:37:27.807 回答
0

我们可以用paste

rfmodel <- randomForest(as.formula(paste0(input$outcome, " ~ TOR")),
        data = df_train, mtry = 5)
于 2021-06-20T19:05:57.717 回答