r - devtools::check() F 使用而不是 FALSE 执行停止,R
问题描述
我的功能和评论是:
#' @examples check_duplication(iris,col_names = "Sepal.Length",check_type = F)
# check_duplication(iris,col_names = "Sepal.Width")
check_duplication <- function(data,col_names,check_type=T){
if(check_type){ data <- as.data.frame(data)}
duplicate_nums<- nrow(data)-nrow(as.data.frame(base::unique(data[,col_names])))
return(duplicate_nums)
}
testthat
当我使用 devtools::check() 时,它 可以在测试和控制台上运行,它会报告错误
我知道当我使用 F 而不是 False 时,会发生此错误,但是是什么原因造成的?
checking examples ... ERROR
Running examples in ‘datools-Ex.R’ failed
The error most likely occurred in:
> base::assign(".ptime", proc.time(), pos = "CheckExEnv")
> ### Name: check_duplication
> ### Title: check data unique
> ### Aliases: check_duplication
>
> ### ** Examples
>
> check_duplication(iris,col_names = "Sepal.Length",check_type = F)
Error in check_duplication(iris, col_names = "Sepal.Length", check_type = F) :
F used instead of FALSE
Execution halted
我有两个问题:
- 如何解决此错误
- R中的TRUE和F有什么区别
谢谢你的帮助~
解决方案
如消息所示,使用FALSE
代替。F
F
是变量,FALSE
是常数。使用F
是危险的,因为用户可能有类似的代码F <- 100
,然后使用你的默认值check_type = F
,
if (check_type) { data <- as.data.frame(data)}
将执行该子句,因为100
计算结果与TRUE
.
如果用户尝试
FALSE <- 100
它将被标记为语法错误。
推荐阅读
- angular - 如何在 Jasmine 中模拟 rxjs webSocket?
- flutter - 无法启动 Pixel 2 API 30:错误:模拟器未在 60 秒内连接
- node.js - ubuntu服务器崩溃时如何自动重启
- javascript - 在另一个带有 OnSubmit 触发器的 Google 父表单中创建的 Google 子表单在子提交触发时创建了奇怪的行为
- github - 使用脚本从 NEXUS 迁移到 JFrog 失败
- reactjs - 反应材料或者
- c - C 语言,在赋值中进行隐式转换
- laravel - PayPal Laravel Integrarion CheckOutStatus = PayentActionNotIntiated
- hashicorp-vault - Unable to connect to Vault Error unsealing: Put "https://127.0.0.1:8200/v1/sys/unseal": dial tcp 127.0.0.1:8200: connect: connection denied
- google-apps-script - 使用服务帐户进行身份验证的 Google 环聊机器人(Apps 脚本)