разбор числовых значений в символе, поскольку они не зависят от значения `scipen`

#r #ggplot2 #expression

#r #ggplot2 #выражение

Вопрос:

У меня есть символьное выражение, содержащее результаты статистических тестов, и я хочу проанализировать это выражение в ggplot объекте. Но я хочу, чтобы анализируемое выражение выглядело идентично, независимо от того, какое значение пользователь мог установить для scipen параметров.

по умолчанию scipen = 0 (хорошо)

 library(ggplot2)

# plot is just for illustration and has nothing to do with the statistics being displayed
ggplot(mtcars, aes(wt, mpg))   geom_smooth()   geom_point()   
  labs(subtitle = parse(text = "list(~chi['gof']^2~(8)==617.445, ~italic(p)==4.15e-128)"))
 

с scipen = 999 (нежелательно)

 library(ggplot2)
options(scipen = 999)

# plot is just for illustration and has nothing to do with the statistics being displayed
ggplot(mtcars, aes(wt, mpg))   geom_smooth()   geom_point()   
  labs(subtitle = parse(text = "list(~chi['gof']^2~(8)==617.445, ~italic(p)==4.15e-128)"))
 

Как я могу убедиться, что анализируемое выражение всегда находится в научной нотации, не изменяя параметры на стороне пользователя?

Ответ №1:

Вы можете просто заключить значение в кавычки, чтобы убедиться, что оно анализируется как символьная строка, а не числовое значение:

 library(ggplot2)

options(scipen = 999)

ggplot(mtcars, aes(wt, mpg))   geom_smooth()   geom_point()   
  labs(subtitle = parse(text = "list(~chi['gof']^2~(8)==617.445, ~italic(p)=='4.15e-128')"))
 

введите описание изображения здесь

Ответ №2:

Мы могли бы извлечь текущие параметры, а затем изменить их

 op <- options()$scipen
options(scipen = 0)
ggplot(mtcars, aes(wt, mpg))   geom_smooth()  
      geom_point()   
      labs(subtitle = parse(text = "list(~chi['gof']^2~(8)==617.445, ~italic(p)==4.15e-128)"))

# // change it to current options
options(scipen = op)