首页 > 解决方案 > 我们如何从子函数中提取外部函数的名称?

问题描述

我在“R”中有三个功能:

## Inner Function
funcA <- function(A){
  return(A + 1)
}

## Outer Function 1
funcB <- function(B){
  funcA(B)
}

## Outer Function 2
funcC <- function(C){
  funcA(C)
}

我想做的是——

## Inner Function
funcA <- function(A){
  if (called from funcB()){
    x = 1
  }else if(called from funcC()){
    x = 2
  }
  return(A + x)
}

如何从 funcA 内部知道哪个外部函数称为 funcA?

我在这里先向您的帮助表示感谢。

标签: r

解决方案


这将给出一个包含调用函数名称的字符串:

as.character(sys.calls()[[sys.nframe() - 1]][[1]])

如果为了提高模块化完全可行,我不会这样做,而是传递一个参数来funcA确定它的行为方式,或者也许可以使用 S3 并将不同类的对象传递给funcA.


推荐阅读