R语言直接用$提取函数返回值元素是否为良好编程实践
结论
这种直接从函数返回结果中提取目标元素的写法是R的合法语法,算不算良好实践没有绝对定论,要结合使用场景判断。
推荐使用的场景
- 临时写探索性脚本、快速验证逻辑,不需要长期维护代码的场景,少定义一个无用的中间变量,代码更简洁
- 明确知道该函数的返回结构永远不会变,
columnA字段100%存在,不会出现缺失情况 - 你完全不需要用到函数返回的其他元素,提取完这个字段之后返回结果就没有用处了
不推荐使用的场景
- 生产环境、需要多人协作或长期维护的代码:如果后续函数的返回结构调整,缺失了
columnA字段,这种写法的报错信息会非常模糊,很难第一时间定位是函数返回异常还是提取逻辑的问题,存中间变量方便调试、打日志排查问题 - 后续需要用到函数返回的其他字段:反复调用同一个函数会重复计算浪费性能,不如存一次中间变量多次提取
- 函数返回结果体量很大:如果只需要其中一个字段,更建议给函数加参数指定返回字段,而不是计算全量结果后只取一个,白白浪费内存
小优化建议
如果不想写中间变量又担心报错,可以用更安全的提取方式代替$,比如用purrr包的pluck函数设置默认值:
library(purrr) resultTest <- calculateMean(testList) |> pluck("columnA", .default = NA_real_)
就算目标字段不存在也会返回你预设的默认值,不会直接中断程序运行。
内容的提问来源于stack exchange,提问作者Nneka
相关产品推荐
相关产品推荐

