2012-08-11 127 views
0

當我跑我的[R腳本,它給了我一個錯誤:錯誤運行v腳本

Error in list.files(lib, pattern = paste0("^", pkg, "$"), full.names = TRUE) : 
    invalid 'pattern' regular expression 

這個錯誤是什麼意思? 的鏈接腳本是:http://mzmatch.sourceforge.net/metabolomics/Processing_Code.R

但我在開始時改變了幾行字:

library ("D:\\java projects\\RScriptRunning\\R\\win-library\\2.15\\mzmatch.R") 
mzmatch.init (6000) 
setwd ("D:\\R_Script\\raw") 
+0

你能不能展示導致這個錯誤的代碼,而不僅僅是消息? (特別是,我們需要看看'pkg'中有什麼) – 2012-08-11 19:59:41

+2

我們需要一個可重複的例子...這個問題不能沒有任何上下文的回答。請參閱http://tinyurl.com/reproducible-000。特別是,這個錯誤意味着'pkg'變量包含一個不構成合法正則表達式的字符串(參見'regexp'),但如果沒有上下文,我們就不能說太多。 – 2012-08-11 20:00:20

+0

我編輯帖子 – user1574866 2012-08-11 20:09:57

回答

3

完全重寫我的答案,因爲the first version錯過的相關點。

當您閱讀這樣的錯誤消息時,致電traceback()會告訴您哪裏發生了錯誤。在這種情況下,它很可能會識別find.package函數,它以某種方式從library函數中調用。它從包名構建一個路徑名,並且不會轉義包名。因此,在正則表達式中具有特殊含義的符號(可能是反斜槓)會使此正則表達式無效,從而產生錯誤消息。

原因是您嘗試使用其文件的完整路徑名加載庫。 庫僅通過軟件包名稱加載(最有可能的情況下爲library(mzmatch))。您可以使用source("C:\\some\\path")從給定路徑加載和執行R源代碼,但我不建議爲已安裝的庫執行此操作。

+2

問題可能出現在腳本中使用的「mzmatch.R」包中。 – 2012-08-11 20:48:05

+3

正如有人低估了這個答案,我很樂意看到一條評論,告訴我和其他人關於投票的原因。 – MvG 2012-08-11 20:57:48

+0

downvote可能與Joshua Ulrich提到的有關 - 在編輯帖子之前,您只是假設錯誤出現在代碼中,並且用戶需要更改gsub中的某些內容 - 但這很可能是由於調用所使用的包中的函數。 – Dason 2012-08-11 21:32:25