2017-09-12 21 views
-2

R cov()中的標準協方差函數在DSX中不起作用。R中的標準cov()函數在DSX中不起作用

我跑了states.x77數據集下面的代碼:

cov(states) 

,我得到了以下錯誤消息:

Error in (function (classes, fdef, mtable) : unable to find an 
    inherited method for function ‘cov’ for signature ‘"matrix"’ 
    Traceback: 
    1. cov(states) 
    2. (function (classes, fdef, mtable) 
    . { 
    . methods <- .findInheritedMethods(classes, fdef, mtable) 
    . if (length(methods) == 1L) 
    . return(methods[[1L]]) 
    . else if (length(methods) == 0L) { 
    . cnames <- paste0("\"", vapply(classes, as.character, 
    . ""), "\"", collapse = ", ") 
    . stop(gettextf("unable to find an inherited method for function %s 
    for signature %s", 
    . sQuote([email protected]), sQuote(cnames)), domain = NA) 
    . } 
    . else stop("Internal error in finding inherited methods; didn't 
    return a unique method", 
    . domain = NA) 
    . })(list("matrix"), structure(function (x, ...) 
    . { 
    . standardGeneric("cov") 
    . }, generic = structure("cov", package = "SparkR"), package = 
    "SparkR", group = list(), valueClass = character(0), signature = 
    "x", default = `\001NULL\001`, skeleton = (function (x, 
    . ...) 
    . stop("invalid call in method dispatch to 'cov' (no default 
    method)", 
    . domain = NA))(x, ...), class = 
    structure("nonstandardGenericFunction", package = "methods")), 
    . <environment>) 
    3. stop(gettextf("unable to find an inherited method for function 
    %s for signature %s", 
    . sQuote([email protected]), sQuote(cnames)), domain = NA) 

我不知道我在做什麼錯。事實證明,stats :: cov()被SparkR :: cov()覆蓋。一旦我將我的代碼替換爲:

stats::cov() 

函數返回了所需的結果。

謝謝, Venky

+0

您是如何得到此錯誤的? – lebelinoz

+0

我在states.x77數據集上運行了cov(states)。 stats :: cov(states)解決了這個問題。謝謝。 – Venky

回答

1

中的R cov()來自stats包。在R中,導入庫的順序非常重要,它們經常會覆蓋其他功能。看起來就是這樣。您可以通過指定軟件包名稱來調用其他軟件包的覆蓋函數,如下所示:

stats::cov(<dataset>) 
+0

謝謝Sumit! stats :: cov()的作品。 – Venky

+0

完美。我發現'stats :: cov'被'SparkR :: cov'覆蓋。 https://spark.apache.org/docs/latest/api/R/index.html –