You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言中如何判断函数调用输出是否被存储至变量?

在R语言中判断函数调用输出是否被存储到变量中

可以通过检查函数的调用上下文实现该需求,核心是获取当前函数的上级调用,判断其是否为赋值操作。

实现代码

fun <- function(x, y){
  # 获取调用当前函数的上级表达式
  parent_call <- sys.call(-1)
  # 判断是否为赋值操作(覆盖<-、=、<<-三种赋值符)
  is_assigned <- !is.null(parent_call) && 
    is.call(parent_call) && 
    as.character(parent_call[[1]]) %in% c("<-", "=", "<<-")
  # 输出判断结果
  print(is_assigned)
  # 返回计算结果
  sum(x, y)
}

测试验证

a <- fun(1, 2) # 控制台输出 TRUE,结果被存储到变量a
fun(1, 2)      # 控制台输出 FALSE,结果未存储
b <- fun(1, 2) # 控制台输出 TRUE,结果被存储到变量b
print(fun(1,2))# 控制台输出 FALSE,结果作为参数传入print,未赋值给变量

原理说明

  • sys.call(-1):获取当前函数的上一级调用对象,也就是触发fun执行的那行代码对应的表达式结构。
  • 赋值表达式在R的调用结构中,会以<-/=/<<-作为调用的第一个元素,通过检查这一点就能判断函数返回值是否被存储到变量中。

内容的提问来源于stack exchange,提问作者Onyambu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 21:33:12