小编jen*_*yan的帖子

如何在编织Rmd文档时请求提前退出?

假设您有一个不会干净利落的R降价文档.

我知道您可以将knitrchunk选项error设置TRUE为请求继续进行评估,即使存在错误也是如此.您可以通过error = TRUE或以更全局的方式为单个块执行此操作knitr::opts_chunk$set(error = TRUE).

但有时会出现针对编织过程仍然致命的错误.我最近遇到的两个例子:当RStudio不可用时,尝试unlink()当前的工作目录(oops!)并rstudioapi::getVersion()从内联R代码调用.是否对这些类型的错误进行了一般描述,即那些超出范围的错误error = TRUE?有没有办法容忍内联R代码与块中的错误?

此外,还有更多官方方法可以提前停止编织或在这种情况下自动调试吗?

markdown r knitr

40
推荐指数
2
解决办法
5415
查看次数

打印包含S4对象列表列的data.frame

打印一个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 dataframe s4 dplyr

9
推荐指数
1
解决办法
692
查看次数

如何防止命令行args仅被我的脚本解释为R?

我正在使用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 docopt

7
推荐指数
1
解决办法
694
查看次数

如何使用非默认浏览器?

我有一个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并以某种方式直接指定浏览器.

r

6
推荐指数
1
解决办法
677
查看次数

在Travis上加密已重命名的GitHub存储库上的文件

我正在尝试加密文件以便在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帐户中找不到任何旧回购名称的证据,所以我无法弄清楚如何解决这个错误.特拉维斯在哪里挖掘这些旧信息来扼杀?

github travis-ci

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

标签 统计

r ×4

dataframe ×1

docopt ×1

dplyr ×1

github ×1

knitr ×1

markdown ×1

s4 ×1

travis-ci ×1