템플릿에 대해 제공된 매개 변수의 길이를 검사하고 길이가 다른 경우 오류가 발생하는 도우미 함수를 구현하고 있습니다. 여기에 기능입니다 : 내가 전달 된 매개 변수가 올바른지 여부를 확인하기 위해 다른 함수 내에서이 사용하고R : 테스트에서 오류 비교로 예기치 않은 동작이 발생했습니다.
grp <- LETTERS[1:4]
assert_character_vec_length(grp, 3)
Error in assert_character_vec_length(grp, 3) : "grp" must be a character vector with length 3
:
assert_character_vec_length <- function(x, ...) {
name <- as.character(substitute(x))
lens <- unlist(list(...))
lnames <- as.character(substitute(list(...)))[-1]
lnames <- paste(lnames, collapse=' or ')
if(!(length(x) %in% lens) | !is.character(x))
stop(paste0('"', name, '"', ' must be a character vector with length ', lnames))
}
아래는 그 예입니다 것은 사용합니다. 또한 testthat
라이브러리를 사용하여 함수에 대한 테스트를 작성합니다. 나는 간단한 숫자 모든 것을 길이를 비교하고
작업 및 테스트에 통과 :
x <- matrix(1:100, ncol=10)
grp <- LETTERS[1:4]
err1 <- '"grp" must be a character vector with length 10'
expect_error(assert_character_vec_length(grp, 10), err1)
을하지만 길이를 비교하는 식을 사용하고 때 놀랍게도 오류 메시지가 일치하지 않습니다
err2 <- '"grp" must be a character vector with length ncol(x)'
expect_error(assert_character_vec_length(grp, ncol(x)), err2)
Error: error$message does not match "\"grp\" must be a character vector with length ncol(x)". Actual value: ""grp" must be a character vector with length ncol(x)"
내가 그리워 않았고, 무슨 일이야?
고마워요! 완전히 놓쳤습니다. 그리고 나는 "" "grp"... "'와" "grp \"... "'의 차이점을 생각하고 있었고 (오류 메시지에 따라) –