假设您有一个不会干净利落的R降价文档.
我知道您可以将knitrchunk选项error设置TRUE为请求继续进行评估,即使存在错误也是如此.您可以通过error = TRUE或以更全局的方式为单个块执行此操作knitr::opts_chunk$set(error = TRUE).
但有时会出现针对编织过程仍然致命的错误.我最近遇到的两个例子:当RStudio不可用时,尝试unlink()当前的工作目录(oops!)并rstudioapi::getVersion()从内联R代码调用.是否对这些类型的错误进行了一般描述,即那些超出范围的错误error = TRUE?有没有办法容忍内联R代码与块中的错误?
此外,还有更多官方方法可以提前停止编织或在这种情况下自动调试吗?
打印一个data.frameS4对象的列表列时是否存在一般问题?或者我只是不走运?
我用git2r包中的对象来讨论这个问题,但维护者Stefan Widgren也指出了这个例子Matrix.我注意到,如果通过发送对象可以打印dplyr::tbl_df().我接受打印不提供S4对象的大量信息; 我要问的是没有错误.
更高的抱负更新:可以保持data.frame类似的质量吗?
library(Matrix)
library(dplyr)
m <- new("dgCMatrix")
isS4(m)
#> [1] TRUE
df <- data.frame(id = 1:2)
df$matrices <- list(m, m)
df
#> Error in prettyNum(.Internal(format(x, trim, digits, nsmall, width, 3L, : first argument must be atomic
tbl_df(df)
#> Source: local data frame [2 x 2]
#>
#> id
#> (int)
#> 1 1
#> 2 2
#> Variables not shown: matrices (list).
## force dplyr …Run Code Online (Sandbox Code Playgroud) 我正在使用R 的docopt实现.我的脚本有一个命令行选项,其中包含短格式-g.当我运行我的脚本时,似乎这个参数首先由R解释,然后由我的脚本解释.因此,我得到一个关于不指定GUI值的手腕拍.我可以阻止R尝试使用这些命令行参数吗?
脚本示例:
#!/usr/bin/Rscript
suppressPackageStartupMessages(library(docopt))
"docopt practice script
Usage: foo.R [-g <goodies>]
Options:
-g <goodies>, --goodies=<goodies> Goodies
" -> doc
opts <- docopt(doc)
cat(sprintf("goodies = %s\n", opts$goodies))
Run Code Online (Sandbox Code Playgroud)
这是我运行时发生的事情:
Jennifers-MacBook-Pro-3:scripts jenny$ ./foo.R -g donuts
WARNING: --gui or -g without value ignored
goodies = donuts
Run Code Online (Sandbox Code Playgroud)
如果您更改选项的缩写形式-g,以-j中,WARNING消失了......但我有一个很好的理由使用字母g!
我有一个R包,可以在浏览器中触发Oauth2流程(通过httr).用户处于奇怪的情况,他们的IT部门需要特定的系统默认浏览器(在这种情况下,它是IE + Windows).但是用户需要在其他浏览器中执行OAuth.
我知道R_BROWSER环境变量,并想暂时将其设置为需要的浏览器.(然后希望在OAuth流程中获得荣誉......)
我在Mac上摆弄这个,我的默认浏览器是Safari.我的惯常情况R_BROWSER就是这样
Sys.getenv("R_BROWSER")
#> [1] "/usr/bin/open"
Run Code Online (Sandbox Code Playgroud)
我知道如何强制使用例如来自shell的Chrome或来自R的system()电话:
system("/usr/bin/open -a '/Applications/Google Chrome.app' 'http://slate.com'")
Run Code Online (Sandbox Code Playgroud)
但是,我如何将这些知识转移到适当的设置R_BROWSER?这不起作用:
Sys.setenv("R_BROWSER" = "/usr/bin/open -a '/Applications/Google Chrome.app'")
Run Code Online (Sandbox Code Playgroud)
当我随后browseURL(),通常使用Safari默认值.我怀疑答案因操作系统而异.对于Mac OS,似乎希望避免使用open并以某种方式直接指定浏览器.
我正在尝试加密文件以便在Travis-CI上使用,正如我之前成功完成的那样.但是,在某些时候,关联的GitHub存储库已重命名.我现在怀疑 - 但无法确认 - 重新命名是在我上次成功添加加密文件后发生的.
受影响的文件包含OAuth2令牌,需要每隔几个月刷新一次,这是我目前的需求.没有这个,我的测试不会运行.
当我按照这里的指示,我可以成功登录Travis,查看我的回购等,但我无法为此回购加密文件.我第一次创建加密文件时成功使用了这些说明.
这是发生的事情:
$ travis encrypt-file tests/testthat/googlesheets_token.rds
repository not known to https://api.travis-ci.com/: jennybc/gspreadr
Run Code Online (Sandbox Code Playgroud)
有问题的存储库是https://github.com/jennybc/googlesheets,但几个月前从gspread更改为googlesheets.当时,这似乎进展顺利.我在GitHub或我的Travis帐户中找不到任何旧回购名称的证据,所以我无法弄清楚如何解决这个错误.特拉维斯在哪里挖掘这些旧信息来扼杀?