用于写入磁盘文件的R函数应当设置什么合适的返回值?
R函数
write_to_disk合适的返回值选择 首先要说明的是,vroom::vroom_write 本身默认就会返回输入的数据集,你现在写的函数已经隐式返回了输入的data,如果要显式加return()语句,可以根据你的使用场景选以下几种常用方案:
- 返回输入的
data本身
这是最符合tidyverse生态函数习惯的选择,不会打断管道调用逻辑,写完文件后还可以继续对数据做后续处理。示例代码:
调用时可以直接接管道:write_to_disk <- function(data, folder, name){ output_path <- file.path(main_path, folder, paste0(name, ".tsv")) data %>% vroom::vroom_write(output_path) return(data) }df %>% filter(col > 0) %>% write_to_disk("clean", "filtered_data") %>% group_by(col2) %>% summarise(n = n()) - 返回生成的文件完整路径
如果你更关注文件的写入位置,不需要后续处理数据,可以返回拼接好的输出路径,拿到返回值后可以直接用来校验文件存在性、或者后续读取该文件时不用重复拼接路径。示例代码:write_to_disk <- function(data, folder, name){ output_path <- file.path(main_path, folder, paste0(name, ".tsv")) data %>% vroom::vroom_write(output_path) return(output_path) } - 返回布尔值标识操作结果
如果只需要确认写入是否成功,尤其是批量写入大量文件的场景,可以返回写入成功与否的布尔值,方便后续批量校验状态。示例代码:write_to_disk <- function(data, folder, name){ output_path <- file.path(main_path, folder, paste0(name, ".tsv")) data %>% vroom::vroom_write(output_path) return(file.exists(output_path)) }
以上几种方案没有绝对的优劣,根据你实际使用的需求选择即可,显式添加return()只是把原本隐式的返回逻辑明确化,不会带来额外的性能开销。
内容的提问来源于stack exchange,提问作者Giulio Centorame
相关产品推荐
相关产品推荐

