首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在单个命令中运行选定的Rmd块。

在单个命令中运行选定的Rmd块。
EN

Stack Overflow用户
提问于 2021-03-08 22:06:24
回答 1查看 469关注 0票数 6

我正在用Rmd笔记本进行实验,我被困在一些似乎应该是可能的事情上,但我根本找不到解决方案。

基本上,我想要一种功能的方式来运行选定的Rmd块,而不编译与针织品。因此,我认为在这里使用依赖块、缓存等是行不通的。

下面是一个示例笔记本:

Example_Notebook.Rmd

代码语言:javascript
复制
---
title: "Example_Notebook"
output: html_notebook
---

```{r Chunk_1 , include=T}

打印(1+2)

Var1 <-‘来自块1的变量’

代码语言:javascript
复制
```{r Chunk_2 , include=T}

Var2 <-‘变量从块2’

代码语言:javascript
复制
```{r Chunk_3 , include=T}

打印(Var1)

Var3 <-‘变量从块3’

打印(Var3)

代码语言:javascript
复制

假设我想运行块1和块3。要手动运行,我可以在游标位于Ctrl+Shift+Enter时使用Chunk_1,然后在游标在Chunk_3时再次使用Ctrl+Shift+Enter。这将跳过Chunk_2,同时仍然获得1和3的输出。

我正在寻找一种在单个命令/函数中执行此操作的方法。这类似于RStudio中的按钮“运行上面的所有块”,但显然,我想跳过Chunk_2。

我试过很多方法在函数中写这个。我得到的最接近的是使用rstudioapi包。下面是我的函数的样子:

代码语言:javascript
复制
MyNewFunction <- function(){
    rstudioapi::navigateToFile( file = 'Example_Notebook.Rmd' , line = 6  )
    Sys.sleep(.2)
    rstudioapi::executeCommand(commandId = 'executeCurrentChunk')
    Sys.sleep(.2)
    print('First Command Complete')
    
    rstudioapi::navigateToFile( file = 'Example_Notebook.Rmd' , line = 15  )
    Sys.sleep(.2)
    rstudioapi::executeCommand(commandId = 'executeCurrentChunk')
    Sys.sleep(.2)
    print('Second Command Complete')
}

MyNewFunction()

这是运行的,但是当我查看Example_Notebook.Rmd文件时,Chunk_1会显示一个输出,但是Chunk_3不会。

我的游标在第15行结束,所以它似乎通过navigateToFile、Sleep命令和打印命令运行,但是它等待executeCommand直到整个函数完成。

我还尝试将代码放入它自己的文件中,然后使用source(),以及将代码包装在rstudioapi::sendToConsole()中,但同样的情况也发生了。

这几乎就像我需要在一个命令中执行两个单独的顶级任务,但我不确定这是否可能,甚至在技术上是合理的。

查看Rstudio中的C++ & java代码,似乎“运行上面的所有块”命令将所有块放入一个作用域,并使用函数"executeScopedChunks“。不幸的是,我根本不懂C++或java,所以我真的不了解更多的东西。这可能没有什么帮助,但以防万一,我在这里看:https://github.com/rstudio/rstudio/blob/master/src/gwt/src/org/rstudio/studio/client/workbench/views/source/editors/text/TextEditingTarget.java#L5754

有什么办法解决这个问题吗?任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2022-11-09 06:46:28

首先,您可以尝试“可视”版本而不是“源”版本,它可能会使生活变得更容易:

然后,您可以单击“设置”图标来更改块2或任何不想运行的块,以“显示任何内容(不要运行代码)”:

如果您想运行所有其他块没有针织,您只需单击工具栏右上角的“run”按钮。单击“运行所有”或其他您喜欢的命令。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66537920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档