函数注释不在knitr中显示(r studio)

时间:2015-06-16 15:03:03

标签: r knitr r-markdown

所以我正在创建一个.rmd文件来记录我正在构建的一些函数的开发。我在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 = ""))
##     }
## }

我已经很好地评论了我的代码,并且我真的不想在markdown文档中为我需要显示的每个函数重写我的注释。我的问题是,如果我在R studio中制作一个Rmarkdown文件,如何让knitr在我的函数中显示我的注释?

我应该提一下,当我使用该选项在R studio中运行单独的'chunk'时,它打印了包含注释的函数,所以我认为它必须与IDE默认处理knitr有关。

1 个答案:

答案 0 :(得分:4)

这不是 knitr 的问题,也不是您使用它的方式,也不是您使用的块选项。

问题是由于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