2017-06-21 37 views
0

我有R代碼,它運行一段代碼,用於計算數據框中每個組的統計數據列。在數據框中直接在控制檯中運行代碼時,它按預期工作。R:在控制檯中直接運行R代碼時與在函數中包裝時不同的結果

但是,我想製作一個包含此功能的包。當我將原始代碼包裝在以數據框爲參數的函數中並將新數據列返回給傳入的數據框時,結果列不相同。

我想知道它是否與R中使用的範圍有關,但是在我的代碼的多個變體之後,我似乎無法解決問題。我也遇到過這個問題。

編輯:我發現,當我源代碼時,它說它找不到我上面定義的函數。這是該地區時,我的代碼是給不同的結果,因爲我已經包裹在一個try catch塊其他函數調用

例子:

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

myFunction <- function(df){ 
    result <- tryCatch({ 
    otherFunction(df, ...) 
    }, error = function(e) { 
    NA        # the result is always being set to NA 
    }) 
    return result 
} 
... 
myDf <- ... 
myFunction(myDf) 

error: "could not find function "otherFunction"" 
+0

請確保我們實際上可以執行你的[重複的例子(https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example),否則它不是對我非常有幫助。 – MrFlick

回答

0

這個問題實際上是在你的tryCatch結構中的錯誤(你不包括括號)。由於tryCatch構造不正確,R無法創建myFunction對象。請參閱下面修改的代碼來解決問題。

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

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

    return (result) 
} 

... 
myDf <- ... 
myFunction(myDf) 
+0

謝謝你指出,這是一個錯字。我在我的實際代碼中有括號。關於語法部分沒有錯誤 – Richard

+0

我提供的代碼不會對我產生任何錯誤。你的錯誤的另一個潛在原因可能是你的'myFunction'結尾有'return result'這一行,它實際上應該是'return(result)' –

相關問題