2015-09-23 14 views
6

Tôi đến từ một nền python và đang cố gắng để có được tốc độ với R, vì vậy hãy chịu với tôiTìm các tập tin nguồn chứa chức năng R nét

Tôi có một file R - util.R với những dòng sau:

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

tôi nguồn nó như sau:

source('path/util.R')

bây giờ tôi có hai đối tượng chức năng và muốn viết một functio n như sau:

getFilePath (util.add)

rằng sẽ cho tôi kết quả này

[1] "path/util.R"

+2

Có thể đợi cho đến khi câu hỏi trước của bạn được trả lời trước khi đăng bài khác ... – Frank

+0

IMO hai câu hỏi độc lập – user1827356

+0

Điều này có thể khó hoặc hơi khó hiểu trong R. Nếu bạn mô tả chi tiết hơn tại sao bạn có thể muốn làm điều này, có lẽ một số kinh nghiệm R folks có thể đề xuất một cách tiếp cận khác. – joran

Trả lời

5

Đào vào srcref thuộc tính của một trong những chức năng nạp dường như công việc, nếu bạn đi đủ sâu ...

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

Chà! Tốt đào! – Gregor

+0

Tuyệt vời, thậm chí còn có srcfile $ wd cho các đường dẫn tương đối! – user1827356

+0

@Ben, điều này dường như chỉ hoạt động ở chế độ tương tác. Không phải khi tôi làm R với tùy chọn -e hoặc Rscript. Bất kỳ ý tưởng làm thế nào để có được nó để làm việc cho các điều kiện bổ sung? Cảm ơn – user1827356

Các vấn đề liên quan