2015-06-16 23 views
3

因此,我正在製作一個.rmd文件來記錄我正在構建的一些功能的開發。我在R工作室工作。我注意到,當我輸入功能註釋不顯示在knitr(r工作室)

```{r echo=TRUE, tidy=FALSE } 
    createExamData 
    ``` 

它導致了這種針織文件

## function (directory) 
## { 
##  files = list.files(directory) 
##  files = files[grepl("i", files)] 
##  files = substring(files[], 1, 4) 
##  examData <- LoadData(directory) 
##  nExams <- length(examData[[1]]) 
##  adjMatrixStd <- list(length = nExams) 
##  for (i in 1:nExams) { 
##   iExam <- examData[[1]][[i]] 
##   iExam <- iExam[order(iExam[, 1]), ] 
##   gExam <- examData[[2]][[i]] 
##   gExam <- gExam[order(gExam[, 1]), ] 
##   key <- examData[[3]][[i]] 
##   adjMatrixStd <- ComputeStdAdjMatrix(gExam) 
##   adjMatrixWt <- ComputeWeightedMatrix(iExam, gExam, key) 
##   adjMatrixConv <- calculateConvinceMtd(iExam, gExam) 
##   save(iExam, gExam, key, adjMatrixStd, adjMatrixWt, adjMatrixConv, 
##    file = paste(files[i], ".Rdata", sep = "")) 
##  } 
## } 

我已經做得很好了評論我的代碼和真的不希望有重寫我的意見中我需要顯示每個功能的降價文檔。我的問題是,如果我在R studio中製作Rmarkdown文件,我該如何讓knitr在我的函數中顯示我的評論?

我應該提到,當我使用選項在R studio中運行個別'塊'時,它會打印包含註釋的函數,因此我認爲它必須與IDE默認的句柄knitr有關。

回答

4

這不是一個問題,或者你使用它的方式,也不是你使用的塊選項。

問題歸因於print.function(),它無法訪問該函數的源代碼,而只能訪問其解析的表示。

我懷疑這是一個函數,你有一個包裝,你已經加載?如果是這樣,一種選擇是再次獲得該功能,並明確地print()它。確保getOptions("keep.source")TRUE

如果你不想給函數的複製源到工作區,可以輸出成一個環境,然後print是在環境的版本:

env <- attach(NULL, name = "myenv") 
sys.source("~/work/git/permute/permute/R/shuffleSet2.R", env, 
      keep.source = TRUE) 
with(env, print(shuffleSet)) 

你可能會想要attach到您的包下面的搜索路徑的位置,以便包代碼始終被調用,並不會導致您的問題。

有在代碼中安裝的軟件包沒有評論的原因是由於選項keep.source.pkgs,默認爲FALSE並需要TRUE當包安裝它有任何影響。請參閱?options瞭解更多詳情。

+0

添加添加keep.source = TRUE當我來源包的工作。謝謝 –

+0

@CodyBlakeney對,但你可能不希望找到一個軟件包,並試圖在全球環境中使用它作爲一個軟件包。像正常一樣加載pkg(通過'library()'),然後使用'sys.source'例子來源代碼進入一個環境(只需將它附加到pkg下面;運行搜索路徑(運行'search()'並找到where你的pkg通常是2(除非你在其後面加載了其他的pkgs),並將環境附加到低於pkg的位置。 –