小编R Y*_*oda的帖子

如何使用 tracemem 功能在代码块中抑制 knitr/RMarkdown“eval eval withVisible ...”输出?

我有一个简单的 RMarkdown 文档:

---
title: "Untitled"
author: "Author"
date: "November 22, 2015"
output: html_document
---

```{r}
x <- 1:10
tracemem(x)
x[2] <- 22
```
Run Code Online (Sandbox Code Playgroud)

当我将它编织成 HTML(使用 RStudio -> Knit HTML 按钮)时,它显示了来自 tracemem 的奇怪输出(“ eval eval withVisible... ”):

x <- 1:10
tracemem(x)
## [1] "<0x32b7c28>"
x[2] <- 22
## tracemem[0x32b7c28 -> 0x33cda68]: eval eval withVisible withCallingHandlers handle evaluate_call <Anonymous> in_dir block_exec call_block process_group.block process_group withCallingHandlers process_file <Anonymous> <Anonymous>
## tracemem[0x33cda68 -> 0x2bcd818]: eval eval withVisible withCallingHandlers handle evaluate_call <Anonymous> in_dir block_exec …
Run Code Online (Sandbox Code Playgroud)

r rstudio knitr r-markdown

5
推荐指数
0
解决办法
270
查看次数

调试主 Rscript 时如何在函数体内启用断点

我有一个主 R 脚本,它使用名为 Multiply() 的函数执行乘法。

debugSource("C:/Users/R_debug_breakpoint/myFunction.R")
a<-1
b<-2
mult<-Multiply(a,b)
Run Code Online (Sandbox Code Playgroud)

我在名为“myFunction.R”的不同 R 脚本中编写 Multiply()

“myFunction.R”看起来像这样:

Multiply<-function(a,b){
  c<-a+b
  e<-a/b
  d<-a*b
  return(d)
}
Run Code Online (Sandbox Code Playgroud)

如果我想在 Multiply() 函数内的以下行设置断点: d<-a*b 并进入源代码模式以查看 c,e 的值。

但是,当我按下 main.R 中的 Source 选项时,调试器不会在我在 Muliply 函数中设置的断点处停止。它只是运行 main.R 中的所有代码。

我在很多网页上搜索过这个问题,最接近的是 How to set a Breakpoint in function body in R-studio?

但是,我这里使用了debugSource,但仍然失败。

我发现有用的关于断点的另一个博客是: https ://support.rstudio.com/hc/en-us/articles/200534337-Breakpoint-Troubleshooting

它说:为了在采购过程中命中断点,您需要使用 RStudio 中包含的特殊调试采购命令 debugSource。如果您在文件上手动调用源代码,断点仍然有效,但只有在执行完文件中的所有代码后才会启用。

我认为这就是它不起作用的原因,但它没有提到解决方法。

如果你们有任何帮助,我们将不胜感激。

debugging r breakpoints rstudio

5
推荐指数
0
解决办法
922
查看次数

R:如何使 dump.frames() 包含所有变量以便稍后使用 debugger() 进行事后调试

我有以下代码,它会引发错误并使用Hadley Wickham 的建议dump.frames()写入所有帧的转储:

a <- -1
b <- "Hello world!"
bad.function <- function(value)
{
  log(value)                  # the log function may cause an error or warning depending on the value
}

tryCatch( {
             a.local.value <- 42
             bad.function(a)
             bad.function(b)
          },
          error = function(e)
          {
            dump.frames(to.file = TRUE)
          })
Run Code Online (Sandbox Code Playgroud)

当我重新启动 R 会话并加载转储以通过以下方式调试问题时

load(file = "last.dump.rda")
debugger(last.dump)
Run Code Online (Sandbox Code Playgroud)

我在框架中的任何位置都找不到我的变量(a,b,a.local.value)或我的函数“bad.function”。

这使得垃圾场对我来说几乎毫无价值。

我需要做什么才能查看所有变量和函数以进行体面的事后分析

的输出debugger是:

> load(file = "last.dump.rda")
> debugger(last.dump)
Message:  non-numeric argument to mathematical functionAvailable environments had calls:
1: …
Run Code Online (Sandbox Code Playgroud)

debugging r lazy-evaluation environments rdebug

5
推荐指数
2
解决办法
1946
查看次数

带有reveal.js的R Markdown幻灯片:如何左对齐列表项(项目符号和数字)?

如何在幻灯片的左页边距处对齐列表项

似乎revealjs总是使用最长的列表项文本,将其居中在幻灯片上,然后左对齐此下的所有其他列表项:

---
title:
output: 
        revealjs::revealjs_presentation
---

## list items
* a
* picture
* says more
* than a thousand words

or

1. item 1
1. item 2
Run Code Online (Sandbox Code Playgroud)

我试图在幻灯片标题后嵌入一个CSS样式表,但它没有影响:

<style type="text/css">
  .reveal li {
    text-align: left;
  }
</style>
Run Code Online (Sandbox Code Playgroud)

PS:我正在使用RStudio revealjs包.

css markdown pandoc r-markdown reveal.js

5
推荐指数
1
解决办法
1639
查看次数

使用运行时生成的省略号参数调用 R 函数(点-点-点/三个点)

我想调用一个使用...(省略号)参数来支持未定义数量的参数的 R 函数:

f <- function(x, ...) {
  dot.args <- list(...)
  paste(names(dot.args), dot.args, sep = "=", collapse = ", ")
}
Run Code Online (Sandbox Code Playgroud)

我可以调用此函数传递设计时预定义的实际参数,例如:

> f(1, a = 1, b = 2)
[1] "a=1, b=2"
Run Code Online (Sandbox Code Playgroud)

如何传递我...只在运行时知道的实际参数(例如来自用户的输入)?

# let's assume the user input was "a = 1" and "b = 2"
# ------
# If the user input was converted into a vector:
> f(1, c(a = 1, b = 2))
[1] "=c(1, 2)"                # wrong result!
# If …
Run Code Online (Sandbox Code Playgroud)

parameters r function ellipsis parameter-passing

5
推荐指数
1
解决办法
1272
查看次数

发现所有已安装的具有 Java 依赖项的 R 包(出于安全原因)

出于安全原因,我被迫在使用 R 的计算机上卸载 Java (JRE)。

我如何(轻松地:-)发现所有已安装的使用 Java 的软件包?

编辑 2021 年 12 月 14 日: log4j-log4shell-cve-2021-44228-漏洞使这个问题(和答案)变得更加有趣;-)

java installation r package rjava

5
推荐指数
1
解决办法
1129
查看次数

使用 R 的 devtools 库函数“安装”时如何保留源文件

我正在尝试从源代码构建一个 R 包 (DESeq2),以便我可以调试它。我已经安装了所需的所有依赖项,并且正在按照 Hillary Parker 的说明创建 R 包。我正在使用 R-3.4.2 在 CentOS 6.6 上运行它。

我跑:

library("devtools")
install("DESeq2", keep_source=TRUE)
Run Code Online (Sandbox Code Playgroud)

它将它安装在我所有其他 R 库的目录中。当我看着安装DESeq2库它丢失了所有DESeq2/R/*.RDESeq2/src/*.cpp文件。

问题:这些文件在哪里,为什么没有安装?这似乎不是预期的行为。

debugging r devtools r-package

5
推荐指数
1
解决办法
1297
查看次数

名称“演员”未定义

我在 python 编程方面遇到问题,当我尝试编写游戏时(由书籍介绍:Coding Games Python DK 3),它说:名称“Actor”未定义。

这是我的代码:

import pgzrun

from random import randint

WIDTH = 400
HEIGHT = 400

dots = []
lines = []

next_dot = 0

for dot in range(0, 10):
    actor = Actor("dot")
    actor.pos = randint(20, WIDTH -20), randint (20, HEIGHT - 20)
    dots.append(actor)

def draw():
    screen.fill("black")
    number = 1
    for dot in dots:
        screen.draw.text(str(number), (dot.pos[0], dot.pos[1] + 12))
    dot.draw()
    number = number + 1

for line in lines:
    screen.draw.line(line[0], line[1], (100, 0, 0))

pgzrun.go()
Run Code Online (Sandbox Code Playgroud)

python pgzero

5
推荐指数
2
解决办法
1万
查看次数

如何使 Pygame Zero 窗口全屏?

我正在使用易于使用的 Python 库 pgzero(pygame内部使用)进行游戏编程。

如何使游戏窗口全屏?

import pgzrun

TITLE = "Hello World"

WIDTH  = 800
HEIGHT = 600

pgzrun.go()
Run Code Online (Sandbox Code Playgroud)

注意:我正在使用运行时帮助程序库 pgzrun 使游戏无需操作系统 shell 命令即可执行...它隐式导入 pgzero 库...

编辑:pgzero 在内部使用 pygame,也许使用pygameAPI更改了窗口模式...

python pygame pgzero

5
推荐指数
1
解决办法
1518
查看次数

R S3 类:决定是覆盖还是附加类属性的类名

我想创建一个 S3 类。我如何确定哪种设置 class 属性的方法是正确的(因为它会有所不同)?

1) 覆盖类属性

object <- data.frame(field1 = "a", field2 = 2)
class(object)
# [1] "data.frame"
class(object) <- "MyClass"    # set the class by overwriting the existing one
class(object)
# [1] "MyClass"
Run Code Online (Sandbox Code Playgroud)

2) 附加类属性

我还可以附加类名(在开头或结尾):

object2 <- data.frame(field1 = "a", field2 = 2)
class(object2) <- append(class(object2), "MyClass")
class(object2)
# [1] "data.frame"    "MyClass"

object3 <- data.frame(field1 = "a", field2 = 2)
class(object3) <- append("MyClass", class(object3))
class(object3)
# [1] "MyClass"    "data.frame"
Run Code Online (Sandbox Code Playgroud)

我知道在开头和结尾附加类名可能会改变被调用的函数(来自?class):

当通用函数 fun 应用于具有类属性 c("first", "second") …

r r-s3

4
推荐指数
1
解决办法
404
查看次数