我正在测试this R套餐。
以下三项工作正常:
devtools::test()
devtools::test_file("tests/testthat.R")
然而,以下事情
devtools::check()
devtools::build_win()
#(请参阅win-builder输出here)产生此错误:
R CMD检查结果1错误| 0警告| 0注意检查测试... 错误运行'testthat.R'在'tests / testthat.R'中运行测试 失败。最后13行输出:40:mutate_.data.frame(。,city_pop = ~readr :: parse_number(Population..4),metro_pop = ~readr :: parse_number(Population..5), urban_pop = ~readr :: parse_number(Population..6),Country = ~gsub(","," _",Country))41:mutate(.data,!( !(!点)))42: mutate.data.frame(.data,!(!(!dots)))43: as.data.frame(mutate(tbl_df(.data),...))44:mutate(tbl_df(.data), ...)45:mutate.tbl_df(tbl_df(.data),...)46:mutate_impl(.data, 点) testthat结果================================================ ================ OK:34 SKIPPED:0 FAILED:1 1.错误:城市工作(@ test-etl.R#113) 错误:测试单元测试失败执行暂停
此外,old release Travis-CI job引发了关于dplyr
和readr
丢失的错误,development release Travis-CI job引发了无法连接到数据库的错误。 (我怀疑这些错误与上述错误无关。)
我已阅读this和this以及this和this,但这些似乎都不是我的问题。
我已经尝试了所有常用的技巧,并且我相信代码中实际上没有错误,只有某种环境/ NAMESPACE
不匹配我不喜欢理解并且不知道如何调试。
有什么想法吗?我Ubuntu
使用R 3.4.1
。
MWE
# shell
git clone git@github.com:beanumber/etl.git
# R
library(devtools)
test()
check()
答案 0 :(得分:1)
我认为最好的答案(也是我经常使用的答案,特别是在为其他人或“自用”软件包编写代码时)是在使用从其他软件包导入的函数时使用约定package_name :: 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 :: summarise()将 (这样做实际上会引发一个非常有用的警告)。
总体而言,每次加载库时,都会得到一条语句,说明该包中的哪些功能已在其他位置定义。例如。在笔记本电脑上使用dplyr: 下列对象从“ package:base”中被屏蔽: 相交,setdiff,setequal,联合
如果您查看这些警告,则可以看到不能/不应再调用的功能。请注意,在上述情况下,基本函数“ union”现在只能由base :: union调用,对union()的标准调用将使用dplyr函数。换句话说,最近加载的库是“默认”使用的库。
希望有帮助