如何创建嵌套在git目录中的R包

时间:2018-12-17 16:29:13

标签: r git devtools

我曾经能够在github存储库中构建我的R包,但是devtools函数已被弃用,并被新功能取代,不再允许我这样做。

我以前在目录devtools::setup('NewPackage', check=FALSE)中使用/home/User/NewPackage/来创建我的R包/home/User/NewPackage/NewPackage

新的替代方法出现以下错误

usethis::create_package('NewPackage')
#New project 'NewPackage' is nested inside an existing project '/home/User/NewPackage/'
#This is rarely a good idea. Do you wish to create anyway?
#1: Negative
#2: I agree
#3: No way

我已经自动创建了包裹,但是这个新功能破坏了我所有包裹中的代码。

我已将其发布为错误https://github.com/r-lib/usethis/issues/553

但是我仍在寻找解决方法或以任何方式自动提交I agree吗?

隐藏文件

在我的.Rd2pdf12059目录中也有隐藏文件,例如/home/User/NewPackage/

草率修复

在此问题解决之前,我只是复制了旧的devtools源代码,并删除了我不喜欢的代码。

2 个答案:

答案 0 :(得分:0)

这不是最干净的处理方式,但是您可以使用select_type: Simple table: r partitions: null possible_keys: ix_road_geometry key: ix_road_geometry key_len: 34 ref: null rows: 1 filtered: 100 Extra: Using where 来欺骗testthat::with_mock

check_not_nested

答案 1 :(得分:0)

由于 testthat::with_mock 函数现已弃用,并且 mockrmockery 中的函数无法替换其他包中的函数,因此我发现以下方法有效。

请注意,check_not_nested 现在在 challenge_nested_project 软件包(2.0.1 版)中被命名为 usethis

  challenge_nested_project <- function(path, name) return()
  
  rlang::env_unlock(env = asNamespace('usethis'))
  rlang::env_binding_unlock(env = asNamespace('usethis'))
  assign('challenge_nested_project', challenge_nested_project, envir = asNamespace('usethis'))
  rlang::env_binding_lock(env = asNamespace('usethis'))
  rlang::env_lock(asNamespace('usethis'))

此代码在卸载并再次加载包之前不会临时替换该函数,并且 rlang 函数被列为实验性的,因此请谨慎处理,结果将来可能会发生变化。