我有一个简单的 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 脚本,它使用名为 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。如果您在文件上手动调用源代码,断点仍然有效,但只有在执行完文件中的所有代码后才会启用。
我认为这就是它不起作用的原因,但它没有提到解决方法。
如果你们有任何帮助,我们将不胜感激。
我有以下代码,它会引发错误并使用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) 如何在幻灯片的左页边距处对齐列表项?
似乎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包.
我想调用一个使用...(省略号)参数来支持未定义数量的参数的 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) 出于安全原因,我被迫在使用 R 的计算机上卸载 Java (JRE)。
我如何(轻松地:-)发现所有已安装的使用 Java 的软件包?
编辑 2021 年 12 月 14 日: log4j-log4shell-cve-2021-44228-漏洞使这个问题(和答案)变得更加有趣;-)
我正在尝试从源代码构建一个 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/*.R和DESeq2/src/*.cpp文件。
问题:这些文件在哪里,为什么没有安装?这似乎不是预期的行为。
我在 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(pygame内部使用)进行游戏编程。
如何使游戏窗口全屏?
import pgzrun
TITLE = "Hello World"
WIDTH = 800
HEIGHT = 600
pgzrun.go()
Run Code Online (Sandbox Code Playgroud)
注意:我正在使用运行时帮助程序库 pgzrun 使游戏无需操作系统 shell 命令即可执行...它隐式导入 pgzero 库...
编辑:pgzero 在内部使用 pygame,也许使用pygameAPI更改了窗口模式...
我想创建一个 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 ×7
debugging ×3
pgzero ×2
python ×2
r-markdown ×2
rstudio ×2
breakpoints ×1
css ×1
devtools ×1
ellipsis ×1
environments ×1
function ×1
installation ×1
java ×1
knitr ×1
markdown ×1
package ×1
pandoc ×1
parameters ×1
pygame ×1
r-package ×1
r-s3 ×1
rdebug ×1
reveal.js ×1
rjava ×1