2015-09-23 16 views
6

を含むソースファイルを検索し、私はPythonの背景から来て、Rでスピードアップを取得しようとしていますので、私と一緒にRの関数定義

を負担してください、私はRのファイルがある - 次の行を含むutil.R

util.add <- function(a,b) a + b 
util.sub <- function(a,b) { a - b } 

次のように私はそれをソース:

source('path/util.R')

を私は今、2つの関数オブジェクトを持っているとfunctioを書きたいですnは次のように:

getFilePath(util.add)

が私にこの結果にロードされた関数のいずれかが表示されるのsrcref属性を掘り下げる

[1] "path/util.R"

+2

多分あなたの以前の質問が別のものを投稿する前に返答するまで待つかもしれません... – Frank

+0

IMO 2つの質問は独立です – user1827356

+0

これはRで難しいかもしれないし、ややハッキリかもしれません。 Rの人々は別のアプローチを示唆するかもしれません。 – joran

答えて

5

を与えるだろうあなたが十分に深く行くならば、働きます...

source("tmp/tmpsrc.R") 
str(util.add) 
## function (a, b) 
## - attr(*, "srcref")=Class 'srcref' atomic [1:8] 1 13 1 31 13 31 1 1 
## .. ..- attr(*, "srcfile")=Classes 'srcfilecopy', 'srcfile' <environment: 0x8fffb18> 
srcfile <- attr(attr(util.add,"srcref"),"srcfile") 
ls(srcfile) 
## [1] "Enc"   "filename"  "fixedNewlines" "isFile"  
## [5] "lines"   "parseData"  "timestamp"  "wd"  
srcfile$filename 
## [1] "tmp/tmpsrc.R" 
+0

うわー!良い掘り出し物! – Gregor

+0

素晴らしいです、相対パスのsrcfile $ wdさえあります! – user1827356

+0

@Ben、これは対話モードでしか動作しないようです。 -eオプションやRscriptでRを実行しているときではありません。どのようにそれを追加の条件のために働かせるか考えていますか?ありがとう – user1827356