r语言 - devtools::test() 有效,但 devtools::check() 不起作用。为什么?



我正在测试此R软件包。

以下三件事正常工作:

  • devtools::test()
  • devtools::test_file("tests/testthat.R")
  • travis-ci具有R
  • 的发行版本

但是,以下内容

  • devtools::check()
  • devtools::build_win()#(请参阅此处的Win-Builder输出)

产生此错误:

r cmd检查结果1错误|0警告|0笔记检查测试... 运行" testthat.r"的错误运行" tests/testthat.r"中的测试 失败的。最后13行输出线:40:mutate_.data.frame(。,city_pop) =〜readr :: parse_number(人口..4),metro_pop =〜readr :: parse_number(人口..5), Urban_pop = 〜Readr :: parse_number(人口..6),country = 〜gsub(",","," _",country))41:mutate(.data,!(!dots))42: mutate.data.frame(.data,!(!(dots)))43: as.data.frame(突变(tbl_df(.data),...))44:突变(tbl_df(.data), ...)45:mutate.tbl_df(tbl_df(.data),...)46:mutate_impl(.data, 点) 测试结果===============================================================好:34跳过:0失败:1 1.错误:城市有效(@test-Etl.r#113) 错误:测试单位测试失败执行停止

此外,旧版本的Travis-Ci作业会引发有关dplyrreadr缺失的错误,而开发版本Travis-Ci作业则引发了无法连接到数据库的错误。(我怀疑这些错误与上述无关。)

我已经阅读了这篇文章,这是我的,但是这些似乎都不是我的问题。

我已经尝试了所有通常的技巧,而且我非常有信心代码中没有错误,只有某种环境/NAMESPACE不匹配我不了解,也不知道如何调试。

有什么想法吗?我使用R 3.4.1

Ubuntu

MWE

# shell
git clone git@github.com:beanumber/etl.git
# R
library(devtools)
test()
check()

我认为最好的答案(以及我一直使用的答案,尤其是在为他人编写代码或"自用"软件包时)是使用convention package_name :: function :: function()您使用从其他软件包导入的功能。

例如:

library(dplyr)
library(plyr)

df <- data.frame(a=rnorm(10), b = c(rep("a",5),rep("b",5)))
df %>% group_by(b) %>% summarise(mean_value = mean(a), count = n())

无法正常工作。dplyr :: summarizaize()将(这样做实际上会引发非常有用的警告)。

总的来说,每次加载库时,都会得到一个声明,说该软件包中的哪些功能已在其他地方定义。例如。对于我的笔记本电脑上的dplyr: 以下对象从"包装:base"中掩盖: 相交,setdiff,setequal,Union

如果您查看那些警告,您会看到哪些功能无法/不再致电。请注意,在上面的情况下,基本函数"联合"现在只能由base :: union调用,imon()的标准调用将使用dplyr函数。换句话说,最近加载的库是"默认"的库。

希望帮助

最新更新