Почему эта функция в R помещает задний знак sh перед десятичной точкой? - PullRequest
1 голос
/ 11 февраля 2020

У меня есть следующая функция, которая должна выводить строку текста, но, кажется, добавляет в обратную косую черту sh перед десятичной точкой числа:

myfunction <- function(x) {
    center <- mean(x)
    cat("Mean = ",center)
}

Проверьте это с помощью некоторые цифры:

library(testthat)

x <-c(1,2,3,7)

    expect_that(
        myfunction(x),
        prints_text("Mean = 3.25"))

Error: `x` does not match "Mean = 3.25".
Actual value: "Mean =  3\.25"

Как я могу исправить функцию, чтобы она выводила правильный ("Среднее = 3,25") вывод?

1 Ответ

4 голосов
/ 11 февраля 2020

Редактировать:

Удалите это, это работает:

myfunction <- function(x) {
  center <- mean(x)
  cat("Mean =",center)
}

expect_that(
  myfunction(c(1,2,3,7)),
  prints_text("Mean = 3.25", fixed=TRUE))

то есть удаление пробела в cat() и добавление fixed = TRUE, потому что в противном случае любой результат с номером 3, за которым следует что-либо, за которым следует 25, пройдет тест.

оригинальный, но, возможно, неправильный ответ:

Это потому, что testthat::prints_text ожидает регулярное выражение. Добавьте аргумент fixed = TRUE\. экранирует буквальную точку в регулярном выражении)

т.е.

 prints_text("Mean = 3.25"),  fixed = TRUE)

Окончательное редактирование:

Поскольку это может вызвать путаницу:

Это:

myfunction <- function(x) {
  center <- mean(x)
  cat("Mean =","3925")
}

Проходит этот тест (!):

library(testthat)
expect_that(
  myfunction(c(1,2,3,7)),
  prints_text("Mean = 3.25"))

Но не проходит это тест:

library(testthat)    
expect_that(
  myfunction(c(1,2,3,7)),
  prints_text("Mean = 3.25", fixed=TRUE))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...