R:在控制台中直接运行R代码与包装在函数中时的结果不同

时间:2017-06-21 17:41:12

标签: r scope

我有R代码运行一大堆代码,用于计算数据帧中每个组的统计信息列。当使用数据框直接在控制台中运行代码时,它可以正常工作。

但是,我想制作一个包含此功能的包。当我将原始代码包装在一个以数据帧作为参数的函数中并返回带有新列的传入数据帧时,结果列不一样。

我想知道它是否与R中使用的范围有关,但在我的代码有多种变化后,我似乎无法解决问题。我之前也遇到过这个问题。

编辑:我发现当我提供代码时,它说它无法找到我在其上面定义的函数。这是我的代码提供不同结果的区域,因为我已将其他函数调用包装在try catch块

示例:

<ParentComponent>
    <ChildComponent />
</ParentComponent>

1 个答案:

答案 0 :(得分:0)

问题实际上是在tryCatch结构中出错(您没有包含括号)。由于tryCatch的结构不正确,因此R无法创建myFunction对象。请参阅下面的修改代码以解决问题。

otherFunction <- function(df, ...){
  ...
}

myFunction <- function(df){
  result <- tryCatch({
              otherFunction(df, ...)
            }, error = function(err) {
              NA
            })

  return (result)
}

...
myDf <- ... 
myFunction(myDf)