插眼,期待大佬们聊聊自己的经验感受
我先抛个砖,我平时主要的工作内容在数据处理这一块,自己写的一些常用函数,随着反复使用也能慢慢摸索出更合适的参数设计,尽可能的考虑到将来的拓展运用,把函数的参数设计好。比如一些默认设定值,一开始喜欢写在函数里面,后来就改成函数参数加默认值的写法了。还有一些参数,一开始使用的时候只是一维的情况,写起来比较简单,但是后续使用中可能会有多维的应用场景,这种就需要在一开始有个大概的考虑,想下可能的应用场景,然后选择向量/列表/数据框作为默认的参数输入格式。
另外说下最近感受比较明显的一个地方,对于元编程或者说data masking,在平时的数据处理脚本里很好用,能省下很多的重复输入,但是在打包成函数的时候,允许不带引号的变量输入又会让调试变得非常麻烦,我现在都习惯只留字符形式的函数接口,然后在函数中使用临时变量来进行处理,比如这样
f_data_process <- function(data, trt_var = NULL) {
stopifnot(is.character(trt_var))
temp_data <- data %>%
mutate(temp_trt_var = .data[[trt_var]])
# ...
}