r-一次运行代码一行一次断开内联块输出



当我运行完整的代码块时,显示内联输出如预期。但是,如果我一次运行相同的一行,如果我使用多个剧情调用,则会破裂。所以:

set.seed(129485)
x=1:10
y=rnorm(length(x), x, 1)
plot(x,y)
lines(x,y)

在R脚本中正常工作。如果我将其插入全新的R Markdown文件中的代码块中,例如:

---
title: "wtf"
author: "Drew Tyre"
date: "December 22, 2016"
output: html_document
---
```{r}
set.seed(129485)
x=1:10
y=rnorm(length(x), x, 1)
plot(x,y)
lines(x,y)
```

如果我使用控制档位,播放按钮或通过选择所有行并使用控制输入来运行整个块,则此块将运行。但是,如果我一次使用Control-Enter一次运行第一个行,它会在 lines(x,y)的呼叫上打破:

plot.xy中的错误

如果我将选项设置为在控制台中输出块,则它消失了。我想这可能是预期的行为,但是在使用内联输出时,也许控制输入器应该做与控制转移 - 输入相同的事情吗?

我正在使用rstudio 1.0.44和

R version 3.3.2 (2016-10-31)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats     graphics  grDevices utils     datasets
[6] methods   base
loaded via a namespace (and not attached):
[1] rsconnect_0.4.3 tools_3.3.2     yaml_2.1.14
[4] knitr_1.15.1

我也可以在这台机器上重现此行为:

R version 3.2.3 (2015-12-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 7 x64 (build 7601) Service Pack 1
locale:
[1] LC_COLLATE=English_United States.1252 
[2] LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    
attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     
loaded via a namespace (and not attached):
[1] tools_3.2.3  knitr_1.12.3

kevin ushey在rstudio社区论坛上有一个答案:

不幸的是,这是笔记本执行模型的结果。每次执行后重置图形设备状态,因此执行执行的代码执行(例如,填充图)将无法正常工作。

有一些解决方法:

  1. 更喜欢一次使用例如使用CMD Shift Enter,
  2. 将您的情节生成代码在括号{}中,
  3. 定义生成整个图的函数,
  4. 禁用该文档的内联块输出。(执行此操作,通过单击源工具栏中的齿轮图标并选择"控制台中的块输出")

最新更新