我想source()
只能在.R
文件中查找和加載函數。僅在.R文件中的源函數
例如,在文件Analysis.R:
print.hw <- function() {
print("hello world")
}
x <- 1 + 2
...
當我source("Analysis.R")
,它會創建功能print.hw
也分配x
,我不想要的。
任何人有任何想法?我能找到的最好的就是這個問題:
我想source()
只能在.R
文件中查找和加載函數。僅在.R文件中的源函數
例如,在文件Analysis.R:
print.hw <- function() {
print("hello world")
}
x <- 1 + 2
...
當我source("Analysis.R")
,它會創建功能print.hw
也分配x
,我不想要的。
任何人有任何想法?我能找到的最好的就是這個問題:
這工作,而無需使用正則表達式。它也可能比正則表達式解決方案的計算效率低。它創建一個新的環境,獲取整個文件,然後只返回全球環境的功能。
SourceFunctions<-function(file) {
MyEnv<-new.env()
source(file=file,local=MyEnv)
list2env(Filter(f=is.function,x=as.list(MyEnv)),
envir=parent.env(environment()))
}
'source()'旨在執行文件中的所有命令。你的例子中的這兩個命令都將結果分配給一個變量。他們並沒有那麼不同。那麼'x <-function(a)函數(x)x + 1; B'-x(5); B(4)'。這兩個「創造功能」。你想同時運行它們嗎? – MrFlick 2014-10-28 23:36:03
@RichardScriven,如果我能夠找到包含'function(...){'的行,並將它與關閉的'}配對,鏈接的答案將有所幫助。 – Alex 2014-10-28 23:38:04
@MrFlick,我只想分配這些變量是函數的變量。我可以改述我的問題,說我只想執行所有與定義函數相關的命令。 – Alex 2014-10-28 23:39:28