看板 R_Language 關於我們 聯絡資訊
[問題類型]: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) [軟體熟悉度]: 入門(寫過其他程式,只是對語法不熟悉) & linux 新手 [問題敘述]: 想要在 Linux底下用 crontab 排程 執行 R 程式 用 Rstudio 直接執行,就一切正常 但是換到用 crontab 設定排程就會產生錯誤.. 主要是說 bitops 與 XML 套件找不到...! 請問是不是要把我所需要的套件設成 R 裡面預設的套件? 除require("套件名稱") 與 library("套件名稱")之外 有其它的做法嗎? PS. 其實我有寫一個小程式來測試 crontab 來執行 R 程式, 執行結果是正常的... 以下為輸出的錯誤訊息: Loading required package: bitops Warning message: In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE, : there is no package called ‘bitops’ Loading required package: XML Warning message: In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE, : there is no package called ‘XML’ Loading required package: RCurl Warning message:In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE, : there is no package called ‘RCurl’ Loading required package: DBI Loading required package: methods Loading required package: RMySQL Error in library(bitops) : there is no package called ‘bitops’ 停止執行 [環境敘述]: 請提供 sessionInfo() 的輸出結果, R version 3.2.4 Revised (2016-03-16 r70336) Platform: x86_64-pc-linux-gnu (64-bit) Running under: Ubuntu 14.04.4 LTS locale: [1] LC_CTYPE=zh_TW.UTF-8 LC_NUMERIC=C LC_TIME=zh_TW.UTF-8 [4] LC_COLLATE=zh_TW.UTF-8 LC_MONETARY=zh_TW.UTF-8 LC_MESSAGES=zh_TW.UTF-8 [7] LC_PAPER=zh_TW.UTF-8 LC_NAME=C LC_ADDRESS=C [10] LC_TELEPHONE=C LC_MEASUREMENT=zh_TW.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] RMySQL_0.10.8 DBI_0.3.1 RCurl_1.95-4.8 XML_3.98-1.4 bitops_1.0-6 loaded via a namespace (and not attached): [1] tools_3.2.4 感謝各位大大 謝謝 -- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.168.206.122 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1459017111.A.CF7.html
obarisk: 寫個腳本在crontab裡印.libPath 03/27 08:42
obarisk: 比一下在rstudio裡的.libPath 03/27 08:43
誠如 obarisk 大大所言 在 crontab -e 下執行 .libPath()結果 [1] "/usr/local/lib/R/site-library" [2] "/usr/lib/R/site-library" [3] "/usr/lib/R/library" 在 Rstdudio 下執行 .libPath()結果 的確 crontab 少了 /home/yoyo/... 這一行 [1] "/home/yoyo/R/x86_64-pc-linux-gnu-library/3.2" [2] "/usr/local/lib/R/site-library" [3] "/usr/lib/R/site-library" [4]"/usr/lib/R/library" 請問該如何解決?
swedrf0112: 我猜應該是權限問題 確定ㄧ下你的crontab執行跟安裝pa 03/27 08:46
swedrf0112: cage時的權限是ㄧ樣的 03/27 08:46
請問 swedrf0112 大大 權限是要用 sudo Rscript 嗎?... 我不太明白...不過我加了結果還是一樣... ※ 編輯: corel (1.168.215.2), 03/28/2016 07:58:51
Wush978: crontab的環境變數和你平常使用下的環境變數差超多 03/28 08:23
Wush978: 我之前用的quick solution是直接在crontab中ssh自己執行 03/28 08:23
Wush978: 指令,這樣可以解決很多問題(但是要開ssh server) 03/28 08:23
Wush978: 其他可能的問題還有:sort的結果會不同 03/28 08:23
Wush978: .libPaths()會受到環境變數影響,細節在.libPaths的說明 03/28 08:24
Wush978: 我建議你如果不想花太多時間在這件事情上面,就在crontab 03/28 08:24
Wush978: 中ssh自己執行程式,否則除了這點外還可能會有其他bug 03/28 08:25
感謝 Wush978 版主大大的回應 小的剛剛想到一個很笨的方法 就是在inlcude library下 library("XML", lib.loc="指定lib安裝的路徑") 這樣可以在crontab下正常的執行 我有看過Wu大的教學影片 真是惠我良多 謝謝 ※ 編輯: corel (211.73.74.11), 03/28/2016 09:50:05
obarisk: 把路徑加到path之中,或是都裝到system的路徑中 03/28 18:49
obarisk: 無腦做法就是用sudo裝pkg安全做法是開.libpath的權限 03/28 18:50
obarisk: 如果不會遇到版本問題的話 03/28 18:50