主要谈论R。
依赖作为函数参数传递的 data.frame 或 tibble 中存在的特定列名是一种不好的做法吗?或者该函数也应该接受相关的列名作为参数?
是否有任何广泛使用的库遵循此约定?
我认为在合理期望输入符合规范的情况下是可以的。 特别是在面向小受众的软件包中,当输入不会变化时,花费大量时间开发非常通用的功能是没有意义的。
如果你将来需要扩展函数的通用性,请考虑(a(接受函数参数中的其他变量名称,默认为当前名称,或者(b(更雄心勃勃的公式。
无论变量是否是硬编码的,请考虑使用类似将死的东西。 您可以使用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]])
}