作者Wush978 (拒看低质媒体)
看板Statistics
标题[程式] R source原始码的问题
时间Sun Feb 26 12:42:31 2012
------------------------------------------------------------------------
[软体程式类别]:
请填入软体程式类别 例如SAS、SPSS、R、EVIEWS...等
R
[程式问题]:
资料处理、回归、叙述统计、logistic、probit...等
载入既有的程式码
[软体熟悉度]:
请把以下不需要的部份删除
高(1年以上)
[问题叙述]:
请详尽叙述遭遇到的问题,可能的话,分点叙述你要处理的流程
大家好, 我最近在写程式的时候发现使用R 的source有以下的状况:
我的工作目录有 workspace/ 和 workspace/src/
当我把A.R, B.R 放在 workspace/src/资料夹底下
A.R会用到B.R里面的东西所以他的内容为
#workspace/src/A.R
source("B.R")
#...
然後我在workspace/底下有一个程式的主要进入点 exec.R
#workspace/exec.R
source("A.R")
#...
但是这时当R进入A.R後就错误了
因为他在parse source("B.R")的时候的根目录并不会切换到A.R的所在位置
所以我想请问是不是已经有解决这类问题的方案呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.141.251.202
1F:→ gsuper:把 "A.R" 内 call B.R 的路径改成 source("./src/B.R") 02/26 12:51
2F:→ gsuper:不然就是用 system("pwd",intern=T) 自行设定一些路径问题 02/26 12:55
3F:→ gsuper:再搭配一些 paste 之类的方式指定路径 02/26 12:56
我不喜欢这个方法的理由是
未来只要我想要重复使用A.R, B.R的功能
我必须要重新改一次source的路径
4F:推 LITTLEN:file.path可以参考看看... 02/26 13:14
5F:→ clickhere:全改用相对路径,从起始目录source进R不就解了. 02/26 21:14
後来我想了想其他语言解决类似问题的方式
在PHP内我可以用__DIR__ (取得档案现在的位置)来解决这个问题
在C内是要把某个资料夹加入到compiler的search path内来解决
---
所以R的话目前我想到比较漂亮的既有解法是以类似C的概念
把这些档案都以某个资料夹为中心来交互参照
并且再写一个source全部档案的方式
Hmm... 用setwd应该是可以写一个类似的出来
---
包package也是一招, 但是满费功夫的
※ 编辑: Wush978 来自: 1.170.141.14 (02/26 23:38)