2015-04-16 83 views
0

如何從包中打印函數時禁止環境/命名空間行?我試着將功能重新分配給全球環境。我嘗試進入foobar環境。我已經嘗試過噱頭和遊戲,即使與R來完成這項工作。似乎應該有一個簡單的方法來做到這一點。如何在打印R功能時抑制環境線?

> x2 
function(x) { 
    return(x * x) 
} 
<environment: namespace:foobar> 
> 
+0

爲什麼你會需要它不打印?你想捕捉函數體?也許你想'body()'或'dput()'? – MrFlick

+0

我需要它不要打印,因爲我使用Sweave將它放入PDF中。 body()和dput()都有問題,他們刪除格式和空白的細節。 –

回答

2

那麼,如果你想改變如何打印功能,創建自己的print.function。我想,這應該爲你工作

print.function <- function(x,...) { 
    environment(x)<-globalenv(); 
    base::print.function(x,...) 
} 

例如

x2<-function(x) { 
    return(x * x) 
} 
environment(x2)<-asNamespace("stats") 

base::print.function(x2) 
# function(x) { 
#  return(x * x) 
# } 
# <environment: namespace:stats> 

x2 
# function(x) { 
#  return(x * x) 
# } 
+0

現在看起來不錯。讓我再玩一下,我會讓你知道的。儘管如此,對於我的生活,我不確定我遵循它的工作原理。 –