解析错误(text = x,keep.source = FALSE):<text>:2:0:输入意外结束1:OffenceAgainst〜^

时间:2019-03-21 06:48:46

标签: r list loops parsing tidyverse

我试图遍历字符向量列表,并使用其他函数形成线性模型并为我计算值:

all_model_error<-function(explan_vars,depvar,dataset1,dataset2)
{
 x<-list() 
 model_combinations<-all_models(explan_vars)
  for(i in 1:length(model_combinations))
  {

    x[[i]]<-error_rates(model_combinations[[i]],depvar,dataset1,dataset2)


  }
 return(x)

}

但是,当我运行此函数时,我在解析时遇到此错误。 parse()未在此函数的任何函数中使用,对于为什么会收到此错误,我感到困惑。

底层函数定义如下:

gen_formula<-function(depvar,explan_vars)
{

  reg_form<-as.formula(paste(depvar,"~",paste(explan_vars,collapse = "+")))

  return(reg_form)

}

这只是以lm()函数采用的形式返回您的输入。然后:

error_rates<-function(indvars,explan_vars,dataset1,dataset2)
{
  reg_results<-lm(gen_formula(depvar,explan_vars),data=dataset1)
  summary(reg_results)

  df_training<-dataset1 %>%
    add_residuals(reg_results) %>%
    summarize(error_rate=mean(resid^2))
  training_error<-df_training[1,1]

  df_test<-dataset2 %>%
    add_residuals(reg_results) %>%
    summarize(error_rate=mean(resid^2))
  test_error<-df_test[1,1]


  return(c(test_error,training_error))

}

这只是根据您的测试和训练数据计算模型的误差。 然后:

name_from_bin<-function(b,vars)
{
  return(vars[as.logical(b)])
}



all_models<-function(variables)
{

  k<-length(variables)

  bin_vec<-rep(list(0:1),k)

  bin_mat<-expand.grid(bin_vec)

  list_of_RHS<-list()

  for(i in 1:nrow(bin_mat))
  {
    list_of_RHS[[i]]<-name_from_bin(bin_mat[i,],variables)



  }
  return(list_of_RHS)
}

这些函数用于创建矩阵基于的变量数量的所有可能组合的矩阵。然后,它将这些字符向量作为列表返回,列出所有可能的变量组合。

我想运行all_model_error来查找all_models()的error_rates()。底层函数执行我希望它们执行的任务,并且不包含parse(),这就是为什么我对错误感到困惑。

我正在运行all_model_error(explan_vars,depvar,crime_weather_1,crime_weather_2),并收到此错误。 其中depvar是我的数据集中的单个变量OffenseAgainst,而explan_vars是数据集中14个变量的向量。 Crime_weather_1和2是训练和测试数据集。

0 个答案:

没有答案