依赖于作为函数参数传递的表中的列名是不好的做法吗?

依赖于作为函数参数传递的表中的列名是不好的做法吗?

问题描述:

谈话主要关于R.依赖于作为函数参数传递的表中的列名是不好的做法吗?

它是不好的做法依赖于作为函数参数传递的data.frame或tibble中存在的特定列名称?或者该函数是否也接受相关列名作为参数?

是否有任何遵循此约定的广泛使用的库?

我认为在期望输入符合规范的情况下是合理的。特别是针对小众用户的软件包,当输入不会发生变化时,花费大量时间开发非常通用的功能是没有意义的。考虑(a)接受函数参数中的其他变量名称,默认为当前名称,或者(b)像formulas这样更为雄心勃勃的东西。

无论变量是硬编码的,都可以考虑使用类似checkmate的东西。您可以通过stop()为用户提供更好的上下文,但我更喜欢比较小的受众群体。

lm_nonmissing_only <- function(d, predictor_name="x") { 
    checkmate::assert_numeric(d[[predictor_name]], any.missing = F) 
    checkmate::assert_numeric(d$y    , any.missing = F) # This variable name is still hard-coded 

    lm(d$y ~ d[[predictor_name]]) 
}