作者Wush978 (拒看低质媒体)
看板R_Language
标题[心得] 使用Rscript一定要先library(methods)
时间Tue Aug 1 17:37:25 2017
先附上一个范例程式码
https://gist.github.com/wush978/cc97a807de5d23c9d6d8c3729aeb0e52
如果把这个程式码存到 test.R
无论在console跑 source("test.R") 或是在command line下输入 R --no-save < test.R
都不会发生错误
但是如果在command line下输入 Rscript test.R 就会发生错误
原因在於, R 载入套件的时候,如果该有定义S3/S4方法,那有没有载入methods套件会
对这些方法的行为造成影响。
而在console或 R --no-save 这种用法,预设都会载入methods套件。
但是在Rscript 的环境中,预设不会载入methods套件
心得: 如果要使用Rscript,请在载入套件之前,载入methods套件才能保证你的R 不会
发生错误
ps. 这次我花了20分钟找到原因,上一次... 好像是一个工作天吧... (遇到很多次了)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.163.182.34
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1501580249.A.6DD.html
1F:推 memphis: 哭哭 那..为什麽要用Rscript? 有什麽特异功能吗? 08/02 00:24
2F:→ andrew43: 这还蛮怪的。要不要报到R官方那去? 08/02 03:08
3F:→ Wush978: 回一楼,server上跑那种要好多天的实验,要用command 08/02 11:38
4F:→ Wush978: line来处理的时候,Rscript比R --no-save这种用法更接近 08/02 11:39
5F:→ Wush978: 一般的command line 应用程式 08/02 11:39
6F:→ Wush978: 回二楼,我觉得他们会推给methods与Matrix套件... 08/02 11:41
7F:→ obarisk: 这报也没用吧Rscript的man里好像有 08/02 14:07
8F:→ Wush978: man 只说没有载入methods, 我觉得比较雷的是载入顺序 08/02 16:41
9F:→ obarisk: 如果Matrix在methods之前,确实蛮雷的ORZ 08/02 18:14
10F:推 cywhale: 之前Rscript网路上R-benchmark-25.R有遇到相同的问题.. 08/03 01:06
11F:→ clickhere: default越少越好. 尤其用Rscript的时候. 08/03 10:41
12F:→ clickhere: loading overhead 在某个 scale 之後很恐怖的. 08/03 10:42
13F:→ clickhere: 可能要花个10+分钟去load那些library,才能跑主要的部份 08/03 10:44
14F:→ Wush978: 这次事件也让我发现R有参数可以设定default library 08/06 21:34
15F:→ Wush978: --default-packages 08/06 21:35