标签: devtools

R,修改包中的函数后,修改被忽略

我在 RStudio 中创建了一个包含一些自定义函数的包。

当我更改此包中包含的函数中的某些内容时,我使用“构建”选项卡中的“构建和重新加载”来重建包,希望此操作“更新”它。

这通常可以完美运行。然而,有一种功能没有发生。如果我打开function.R文件,修改就在那里;但是,当我从控制台或脚本调用它时,会加载旧版本。我尝试了一些简单的方法,例如重新启动和“清理和重建”。我尝试删除它,重建并再次添加它,但即使在这种情况下,令人惊讶的是,旧版本也被加载了。

我注意到这个函数看起来与包中的其他函数不同的唯一一件事是: 截屏 我试图调查这个,但我仍然缺乏必要的一般理解,我什至不确定这种差异是否真的与问题有关。

备注1:全局环境为空,所以不屏蔽函数。备注2:search()路径是(包名是SDA,在第二位):

> search()
 [1] ".GlobalEnv"        "package:SDA"       "package:splines"   "tools:rstudio"     "package:stats"     "package:graphics"  "package:grDevices" "package:utils"    
 [9] "package:datasets"  "package:methods"   "Autoloads"         "package:base" 
Run Code Online (Sandbox Code Playgroud)

注意:我正在使用包“devtools”进行开发。

r function devtools package rstudio

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

当条件不满足时,跳过所有测试

使用testthat/devtools基础结构时,跳过R包测试目录中所有测试的正确方法是什么?例如,如果没有与数据库的连接并且所有测试都依赖于该连接,我是否需要skip单独编写所有文件或者我可以在skip某处写一个?

我有一个标准的包装设置,看起来像

mypackage的/

  • ......#其他包裹的东西
  • 测试/
    • testthat.R
    • testthat /
      • 测试thing1.R
      • 测试thing2.R

起初我以为我可以在testthat.R文件中进行测试

## in testthat.R
library(testthat)
library(mypackage)

fail_test <- function() FALSE
if (fail_test()) test_check("package")
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用,看起来调用devtools::test()只是忽略该文件.我想另一种方法是将所有测试存储在另一个目录中,但是有更好的解决方案吗?

r devtools package testthat

6
推荐指数
2
解决办法
706
查看次数

如何让R包推荐一个托管在GitHub上的包?

我正在开发的R包,它作为从被称为平行的rHPC包装功能的包装ctools.我知道如果我希望我的包需要这些包,我需要将它们包含在文件的Imports部分中DESCRIPTION.安装我的软件包时,将从CRAN安装这些软件包.同样,Suggests如果不需要,我可以将它们放在该部分中,但是很有用.这些不会随我的包安装.

但是,我已经分叉了Rhpc包并添加了一个我在ctools包中使用的函数.如何从我的GitHub仓库获取我的软件包以建议/导入此软件包,而不是安装Rhpc软件包,它会执行devtools::install_github("bamonroe/Rhpc")吗?

r devtools r-package

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

使用check()测试失败

我正在尝试在我的软件包中添加一些测试,以确保在进行更改时保持原样.我这样做有些困难.

我想测试我的包的主要功能,可以粗略地描述为插补方法.因此,如果我给第二列有一些的n x 2矩阵,它应该返回第一列中的第一列并且是相同的(因为它完全被观察到),第二列应该被估算,因此第二列中没有.YNAZYZNAZ

显然,该函数还有其他几个输入,但我测试的主要结构是

context("Test output")
test_that("First column equal", {
  set.seed(100)
  Y <- matrix(rnorm(200), 100, 2)
  Y[seq(1, 100, by = 3), 2] <- NA
  out <- my_fun(Y)
  expect_equal(Y[, 1], out[, 1])
})
Run Code Online (Sandbox Code Playgroud)

我的问题是这不起作用.它在我运行时有效devtools::test(),但在运行时无效devtools::check().我尝试使用expect_equal_to_reference()(因为我真正想要测试的是比这个例子更大,更强制),但它也会抛出错误,尽管在控制台中运行代码并与保存的.rds文件进行比较表明它们是相同的.

我发现哈德利的这句话(在测试中):

有时,当使用devtools :: test()以交互方式运行时,测试可能会出现问题,但在进行R CMD检查时会失败.这通常表明您对测试环境做出了错误的假设,而且通常很难弄清楚.

这不是好兆头,但我该怎么办?有任何想法吗?

这是我得到的错误(test_file是包含上述代码的文件的名称):

checking tests ...
** running tests for arch 'i386' ... ERROR
Running the tests in 'tests/testthat.R' failed.
Last …
Run Code Online (Sandbox Code Playgroud)

environment r devtools package testthat

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

如何在包中包含bash脚本?

我需要在我正在编写的R包中包含几个bash脚本.我喜欢将它们与包一起分发,因此当用户通过devtools::install_github(...)他/她安装包时也可以获得脚本.

我知道这是可能的,但我不知道如何.将文件包含在scripts子目录中似乎不够.我需要一种方法告诉R(或RStudio)包含它们.

我使用RStudio进行开发,所以我很欣赏与RStudio提供的"构建包"功能集成的解决方案.

r devtools rstudio

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

NAMESPACE 中的 S3methods 未导出

我正在R使用 devtools::document()开发一个包来创建 NAMESPACE 文件。其中一些函数是 S3methods,用于摘要、预测、绘图、打印,其中泛型在base或 中stats。我正在按照 Hadley 的建议使用 @export,这会导致 NAMESPACE 中的 S3method 条目正确,并且包通过了所有检查 -as-cran。但是,这些函数未在 NAMESPACE 中导出,因此未找到调用 print.myclass(我理解这是避免混乱 NAMESPACE 所需的行为)。但是,通过 Mypackage::print.myclass 调用该函数也会导致该函数不是从 导出的对象的错误Mypackage

问题:这是正确的行为吗?或者是否需要其他步骤才能导出该函数?我曾尝试添加 @method print Myclass 和 @export 但没有运气。devtools在 MAC OS X 10.12.6 下使用 R 3.4.2 和1.13.3

谢谢!梅丽丝

编辑:更新为具有将添加/导出方法和导出功能的代码

简单示例 - 在 RStudio 中构建一个具有以下功能的骨架包:

#' test for export of S3 methods
#'
#' @title "print hello world for any object"
#' @param x object
#' @param digits optional number specifying …
Run Code Online (Sandbox Code Playgroud)

namespaces r devtools

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

如何在数据框列表中使用devtools :: use_data?

我有一系列数据框,我想在我的包中保存为单独的.rda文件.

我可以使用,devtools::use_data(my.df1, my.df2...)但我没有每个数据框的命名对象,它们都存储在一个大的列表中.

我想要做的是为每个列表元素调用use_data并使用列表名称作为.rda文件名.但是,当我执行以下操作时,我收到一条错误消息:

> lapply(my.list, devtools::use_data, overwrite = TRUE)
Error: Can only save existing named objects
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

r devtools

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

无法使用install_github()安装IRkernel:未安装Git吗?

我试图让R在Windows机器上使用Jupyter Notebook工作。我遵循了IRkernel教程。但是,我无法安装GitHub存储库,但总是会收到错误消息

install_github("IRkernel/IRkernel") Downloading GitHub repo IRkernel/IRkernel@master Error: Git does not seem to be installed on your system.

已安装devtools软件包(2.0.1)。install_github也可以与install_github(“ StatsWithR / statsr”)(Coursera软件包)一起使用(尽管devtools软件包甚至没有加载?)。

不确定如何处理该问题,有什么想法吗?我的devtools软件包坏了吗?

更新:刚刚执行了R的重新安装(删除了所有软件包):我仍然遇到相同的错误

r github devtools jupyter-notebook

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

Firefox 检查器 - 使用 CTRL + Z 撤消 CSS 声明

使用ChromeIE11EDGE并在开发人员工具中修改 CSS 时,您可以按 撤消规则/声明CTRL + Z

例如:编辑margin: 16pxmargin: 14pxI 应该能够用 来还原更改CTRL + Z并用CTRL + Y.

我还没有找到在 Firefox 中执行此操作的方法,甚至还没有找到要求添加它的人。这是阻止我在开发中使用 Firefox 的唯一原因。

有没有办法获得这个功能,或者是从 Mozilla 团队请求它的问题?

css firefox undo devtools

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

是否有任何替代远程调试服务器的方法(如 Weinre)

我正在寻找更现代的 Weinre 替代品

  • Weinre 已经有大约 3 年没有支持
  • Weinre 允许我生成一个本地服务器(例如:http : //192.168.0.1 : 8888)专用于远程调试
    • 有很多不错的选择,比如devtool,但是……它们不允许你挂载本地服务器

温雷

我寻找远程调试系统的原因是因为我希望能够从一个平板电脑调试到另一个平板电脑,第一个平板电脑从 URL 运行“devtools”,第二个平板电脑与我的页面进行调试

Chrome USB 调试等工具只能在插入手机的 PC 上运行,而不能通过互联网从手机到另一部手机

你知道任何允许我创建 devtools 服务器的包吗?

remote-debugging devtools

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