【问题标题】:R Tidymodels: error columns don't exist when using function argument to specify columnR Tidymodels:使用函数参数指定列时不存在错误列
【发布时间】:2021-06-21 09:05:47
【问题描述】:

我正在尝试编写一个函数来使用 R tidymodels 函数 initial_split 和一个参数,该参数可以让我在每次调用该函数时将层更改为不同的变量。

像这样定期使用 initial_split 效果很好:

split_glab=initial_split(data,prop=0.7,strata=sp_glabrata)

然后我将其转换为函数并插入我的物种参数:

split_data=function(df,species){
  initial_split(df,prop=0.7,strata=species)
}

split_data(data,species=sp_glabrata)

并得到以下错误:

Error: Can't subset columns that don't exist.
x Column `species` doesn't exist.

当然,我的数据中不存在此列,因为它只是我的函数中的一个参数——我试图引用的列称为 sp_glabrata。我不知道如何让我的函数引用列而不是参数。我不想只输入列名,因为我必须对多个列应用许多类似的函数,而且这将花费很长时间。

任何指导将不胜感激!

【问题讨论】:

  • 不看任何数据就很难知道。 See here 制作一个可重现的示例,让人们更容易帮助并且对未来的用户有用

标签: r tidymodels


【解决方案1】:

由于它是一个整洁的包,可以使用 curly-curly 运算符 ({{}}) 将不带引号的参数作为列名来评估

library(tidymodels)
split_data <- function(df, species){
  initial_split(df, prop=0.7, strata={{species}})
  }

-测试

split_data(iris, species = Species)
#<Analysis/Assess/Total>
#<105/45/150>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-10
    • 2021-10-08
    • 1970-01-01
    • 2011-04-18
    • 2021-09-23
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多