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

Is it bad practice to rely on column names in tables passed as function arguments?

主要讲R.

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

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

我认为在可以合理期望输入符合规范的情况下是可以的。尤其是在面向小众人群的包中,当输入不会发生变化时,您花大量时间开发一个非常通用的功能是没有意义的。

如果您将来需要扩展该函数的通用性,请考虑 (a) 在您的函数参数中接受其他变量名,默认为您当前的名称,或者 (b) 更宏大的名称,例如 formulas.

不管变量是否是硬编码的,请考虑使用 checkmate. You can provide better context for the user with 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]])
}