首页 > 解决方案 > 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

我有两个问题:

  1. 如何解决此错误
  2. R中的TRUE和F有什么区别

谢谢你的帮助~

标签: r

解决方案


如消息所示,使用FALSE代替。F

F是变量,FALSE是常数。使用F是危险的,因为用户可能有类似的代码F <- 100,然后使用你的默认值check_type = F

if (check_type) { data <- as.data.frame(data)}

将执行该子句,因为100计算结果与TRUE.

如果用户尝试

FALSE <- 100

它将被标记为语法错误。


推荐阅读