亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

錯誤:在R中找不到函數....

錯誤:在R中找不到函數....

繁星coding 2019-05-28 16:50:46
錯誤:在R中找不到函數....我正在使用R并嘗試some.function但我收到以下錯誤消息:Error: could not find function "some.function"這個問題經常出現。當你在R中遇到這種類型的錯誤時,你怎么解決它?
查看完整描述

4 回答

?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

在存在NAMESPACE的情況下,另一個問題是你試圖從包foo運行一個未導出的函數。

例如(人為,我知道,但是):

> mod <- prcomp(USArrests, scale = TRUE)> plot.prcomp(mod)Error: could not find function "plot.prcomp"

首先,你不應該直接調用S3方法,但假設plot.prcomp在包foo中實際上是一些有用的內部函數。如果您知道自己在做什么,要調用此類函數需要使用:::。您還需要知道找到該函數的命名空間。使用getAnywhere()我們發現該函數在包統計中

> getAnywhere(plot.prcomp)A single object matching ‘plot.prcomp’ was found
It was found in the following places
  registered S3 method for plot from namespace stats
  namespace:stats
with valuefunction (x, main = deparse(substitute(x)), ...) screeplot.default(x, main = main, ...)<environment: namespace:stats>

所以我們現在可以直接調用它:

> stats:::plot.prcomp(mod)

plot.prcomp只是用一個例子來說明目的。在正常使用中,您不應該像這樣調用S3方法。但正如我所說,如果您要調用的函數存在(例如它可能是隱藏的實用程序函數),但是在a中namespace,R將報告它無法找到該函數,除非您告訴它要查找哪個命名空間。

將此與以下內容進行比較: stats::plot.prcomp 上述操作失敗,因為在stats使用時plot.prcomp,它不會導出,stats因為錯誤正確地告訴我們:

錯誤:'plot.prcomp'不是'namespace:stats'中的導出對象

這記錄如下:

pkg :: name返回命名空間pkg中導出的變量名的值,而pkg ::: name返回內部變量名的值。


查看完整回答
反對 回復 2019-05-28
?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

當計算機在我的控制之下時,我通??梢越鉀Q這個問題,但在使用網格時更麻煩。當網格不是同源的時,并不是所有的庫都可以安裝,而我的經驗通常是沒有安裝軟件包,因為沒有安裝依賴項。為了解決這個問題,我檢查以下內容:

  1. 是否安裝了Fortran?(尋找'gfortran'。)這會影響R中的幾個主要包。

  2. 是Java安裝?Java類路徑是否正確?

  3. 檢查包是否由管理員安裝并可供相關用戶使用。有時,用戶會在錯誤的位置安裝軟件包,或者在沒有適當訪問權限的情況下運行。 .libPaths()是一個很好的檢查。

  4. 檢查lddR的結果,以確保共享庫

  5. 最好定期運行一個腳本,只需加載所需的每個包,并做一些小測試。這會在工作流程中盡早捕獲包問題。這類似于構建測試或單元測試,除了它更像是一個煙霧測試,以確保基本的東西工作。

  6. 如果包可以存儲在網絡可訪問的位置,是嗎?如果他們不能,有沒有辦法確保機器上的版本一致?(這可能看似OT,但正確的軟件包安裝包括正確版本的可用性。)

  7. 包是否可用于給定的操作系統?不幸的是,并非所有軟件包都可以跨平臺使用 這可以追溯到第5步。如果可能,嘗試通過切換到適當的包裝風格或在某些情況下關閉依賴關系來找到處理不同操作系統的方法。

遇到這個問題后,其中一些步驟變得相當常規。盡管#7似乎是一個很好的起點,但它們的排列順序與我使用它們的頻率大致相同。


查看完整回答
反對 回復 2019-05-28
?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

如果在檢查包裝時發生這種情況(R CMD檢查),請查看您的NAMESPACE。

您可以通過將以下語句添加到NAMESPACE來解決此問題:

exportPattern("^[^\\\\.]")

這會導出所有不以點(“?!保╅_頭的內容。這允許您從點開始隱藏功能:

.myHiddenFunction <- function(x) cat("my hidden function")


查看完整回答
反對 回復 2019-05-28
  • 4 回答
  • 0 關注
  • 10083 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號