2015-04-15 3 views
1

Мне нужно сгенерировать форматированную строку, которая включена на графики, которые указывают средний, межквартильный диапазон и количество наблюдений, на которых оно основано. Вот что я пытаюсь ...Распечатка форматированного текста

plot(x=runif(4, 0,100), y=1:4, yaxt="n", ylab="", xlim=c(0,100)) 

m <- "2.3~x~10^6" 
l <- "1.2~x~10^6" 
u <- "4.5~x~10^6" 
n <- 50 
my_string <- paste0(m, "~(", l, "~-~", u, ")~plain(,)", "~N==~", n, "~)") 
text(x=50, y=2.5, parse(text=my_string)) 

Это порождает следующую ошибку ...

Error in parse(text = my_string) : <text>:1:54: unexpected ')' 
1: 2.3~x~10^6~(1.2~x~10^6~-~4.5~x~10^6)~plain(,)~N==~50~) 

Если я

plot(x=runif(4, 0,100), y=1:4, yaxt="n", ylab="", xlim=c(0,100)) 

m <- "2.3~x~10^6" 
l <- "1.2~x~10^6" 
u <- "4.5~x~10^6" 
n <- 50 
my_string <- paste0(m, "~(", l, "~-~", u, ")") 
text(x=50, y=2.5, parse(text=my_string)) 

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

Любые предложения по работе первого блока кода?

ответ

2

Ваша первая попытка имеет мошенник ~) в конце. Это должно работать

my_string <- paste0(m, "~(", l, "~-~", u, ")~plain(',')", "~N==~", n) 
text(x=50, y=2.5, parse(text=my_string)) 
+0

Спасибо! Но зачем ему это делать, если скобки были в кавычках? Кроме того, какие-либо мысли о дополнительном расстоянии от запятой? –

+1

Потому что вы 'parse()' -в строке. Это означает, что выражение должно быть действительным R-кодом. В моем ответе я процитировал запятую, чтобы она появилась. В противном случае это похоже на то, что вы передаете два отсутствующих параметра в 'plain()'. Опять же, 'parse()' превращает все в выражение, которое должно быть допустимым R-кодом, а затем маска '? Plotmath' отображает это выражение R в симпатичный дисплей. – MrFlick

Смежные вопросы