【问题标题】:function comments not displaying in knitr (r studio)knitr(r studio)中未显示功能注释
【发布时间】:2015-06-16 23:34:47
【问题描述】:

所以我正在制作一个 .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 文档中重写我的 cmets。我的问题是,如果我在 R studio 中制作 Rmarkdown 文件,如何让 knitr 在我的函数中显示我的 cmets?

我应该提到,当我在 R studio 中使用仅运行单个“块”的选项时,它打印了包含 cmets 的函数,所以我认为它一定与 IDE 默认句柄 knitr 有关。

【问题讨论】:

    标签: r knitr r-markdown


    【解决方案1】:

    这不是 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 到您的包下方搜索路径上的某个位置,以便始终调用包代码并且不会给您带来问题。

    安装包的代码中没有cmets的原因是keep.source.pkgs选项,默认为FALSE,需要为它安装包时为TRUE产生任何影响。请参阅?options 了解更多详情。

    【讨论】:

    • 添加keep.source = TRUE 当我采购包工作。谢谢
    • @CodyBlakeney 是的,但您可能不想采购一个包并试图在您的全球环境中将其用作一个包。正常加载 pkg(通过library()),然后使用sys.source 示例将源导入环境(只需将其附加到您的 pkg 下方;运行搜索路径(运行search() 并找到您的 pkg 所在的位置,通常为 2 (除非您在它之后加载了其他 pkg)并将环境附加到低于 pkg 的位置。
    猜你喜欢
    • 2019-03-22
    • 2021-08-20
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-05
    相关资源
    最近更新 更多