我不確定這是否可能,但我正在尋找類似於在R腳本中定義區域的內容。我想從另一個R腳本執行一組預先指定的行。我知道我可以使用source(filename)
來運行整個文件,但不是運行整個文件,而只想在文件中運行幾行。從另一個R文件執行一組行
我可以在文件中定義regions
或類似的東西,然後從另一個文件執行它嗎?
任何幫助將不勝感激。
我不確定這是否可能,但我正在尋找類似於在R腳本中定義區域的內容。我想從另一個R腳本執行一組預先指定的行。我知道我可以使用source(filename)
來運行整個文件,但不是運行整個文件,而只想在文件中運行幾行。從另一個R文件執行一組行
我可以在文件中定義regions
或類似的東西,然後從另一個文件執行它嗎?
任何幫助將不勝感激。
如果你擔心,一旦你添加新線的上游,那麼替代的感興趣區域將被轉移(或略
sourcePartial <- function(fn,startTag='#from here',endTag='#to here') {
lines <- scan(fn, what=character(), sep="\n", quiet=TRUE)
st<-grep(startTag,lines)
en<-grep(endTag,lines)
tc <- textConnection(lines[(st+1):(en-1)])
source(tc)
close(tc)
}
現在你需要把一個小的,唯一的哈希標籤正上方和下方的感興趣區域的:作爲MrFlick的回答修改)版本將被讀取。如「#from here」和「#to here」
誠實,我發表我的評論後,我只閱讀你的答案。 – 2014-10-07 22:13:29
這完美的工作,正是我所期待的,非常感謝。 – Patthebug 2014-10-08 20:35:31
這聽起來不像一個超安全的想法,因爲在編輯過程中行號可以輕鬆改變。似乎最安全的做法是將較大的源文件分成更小的部分,以便安全地包含和運行。但你可以做這樣的事情
sourcePartial <- function(fn, skip=0, n=-1) {
lines <- scan(fn, what=character(), sep="\n", skip=skip, n=n, quiet=TRUE)
tc <- textConnection(lines)
source(tc)
close(tc)
}
這裏我們使用scan()
來讀取文件中的行。請參閱skip=
和n=
的文檔?scan
以瞭解如何跳過一定數量的行並在某個數字後停止讀取。所以
sourcePartial("test.R", 4, 11)
將從「test.R」跑線5-15
似乎您應該編寫R函數和構建包。 – 2014-10-07 22:15:02