我多次遇到这样的情况:我在列名称中犯了错误,但当我使用该列时却创建了一条错误消息,R 将(不存在的)列的值设置为零,并刚刚产生了一条警告消息。 我希望使用不存在的列名来导致错误消息。7 我知道可以修改 R 选项来做到这一点,但我想知道是否可以针对特定警告消息执行此操作。
问题在于,提取不存在的列会返回
NULL
,并且 help("sum")
表示“由于历史原因,NULL
被接受并被视为 integer(0)
。”
您可以使用
stopifnot
断言来防止 NULL
值:
TestDF <- data.frame(A = c("a", "b", "c"), B = c(1,2,2), C = c(5,2,3))
CalSumBD <- function(df){
returnval <- sum(df$B) + sum(df$D)
return(returnval)
}
CalSumBD(TestDF)
#[1] 5
mySum <- function(..., na.rm = FALSE) {
stopifnot("NULL value in input" = all(!is.null(c(...))))
sum(..., na.rm = na.rm)
}
CalSumBD_save <- function(df){
returnval <- mySum(df$B) + mySum(df$D)
return(returnval)
}
CalSumBD_save(TestDF)
#Error in mySum(df$D) : NULL value in input