Как иметь новую строку в выражении "bquote", используемом с "текстом"?

Я хочу иметь новую строку в мой bquote условиях, как я могу это сделать?

мой код:

test<-c(1,2,3,4,4.5,3.5,5.6)
test2<-0.033111111
plot(test,c(1:length(test)))

segments(4,0,4,23,col="red",lwd=2)
text(5, 4.5, labels = bquote(Qua[0.99] == .(round(test2,4))),col="red", cex = 1.4)

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

VaR_0.99 =

0.03311

and not

    VaR_0.99 = 0.03311

я попробовал это с линиями, но это не сработало:

    test<-c(1,2,3,4,4.5,3.5,5.6)
    test2<-0.033111111
    lines<-list(bquote(Qua[0.99] == ),bquote(.(round(test2,4))))
    plot(test,c(1:length(test)))

    segments(4,0,4,23,col="red",lwd=2)
    text(5, 4.5, labels =lines ,col="red", cex = 1.4)

2 ответов


одна из ошибок была отмечена выше. R выражения анализируются, поэтому они должны быть синтаксически допустимыми. Поскольку "= = " является функцией с двумя аргументами, она не может быть конечным элементом в выражении. The phantom функция служит в качестве заполнителя, который не печать. Также могло быть пустое символьное значение (""). Поскольку не было никакого" внешнего " значения, которое нужно было оценить, я просто использовал expression(), а не bquote() для первого аргумента в списке выражения.

в другая была скорее семантической ошибкой, чем синтаксической. Вам нужно дать явное местоположение y для второго bquote выражение. В значительной степени все важные аргументы текста являются векторными, но, похоже, неявная индексация вверх(или вниз)для значений y:

test <- c(1, 2, 3, 4, 4.5, 3.5, 5.6)
test2 <- 0.033111111
lines <- c( expression(Qua[0.99] == phantom(0)) ,
           bquote(.(round(test2,4)))
          )
plot(test,c(1:length(test)))

segments(4,0,4,23,col="red",lwd=2)
text(5, c(4.5, 4), labels =lines ,col="red", cex = 1.4)

enter image description here

я использовал atop предложение себя в прошлом, даже предлагая его на Rhelp, но я думаю, что подход выше обобщает лучше до трех или более выражения и позволяет больше контроля над позиционированием. atop также бесшумно уменьшает размер шрифта, поэтому, если вы пошли вложенным поверх маршрута для задачи трех выражений, это может быть atop( atop(..., ...), atop(..., phantom() ) сохранить размер форму.


например, используя atop:

test<-c(1,2,3,4,4.5,3.5,5.6)
test2<-0.033111111
plot(test,c(1:length(test)))

segments(4,0,4,23,col="red",lwd=2)
text(5, 4.5, 
     labels = bquote(atop(Qua[0.99] == phantom(), .(round(test2,4)))),
     col="red", cex = 1.4)

enter image description here