我正在测试此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作业会引发有关dplyr
和readr
缺失的错误,而开发版本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函数。换句话说,最近加载的库是"默认"的库。
希望帮助