Сюжетный текст, содержащий «примерно равно» в R - PullRequest
2 голосов
/ 10 марта 2012

Я знаком с использованием expression() и bquote() при построении специальной текстовой разметки, такой как разметка, в текстовой базовой графике в R. Но как это сделать "примерно равным" без разбора, выдает ошибку. Я имею в виду ?plotmath при определении разметки.

plot(c(1,100), c(1,100), type="n", axes=FALSE, xlab="", ylab="")

# This works
text(50, 80, expression(paste("The area is 24 ", km^2)))

# This doesn't
text(50, 50, expression(paste("Reginald is ", %~~% , "14 years old")))

1 Ответ

10 голосов
/ 10 марта 2012

Это должно сработать:

plot(c(1,100), c(1,100), type="n", axes=FALSE, xlab="", ylab="")
text(50, 50, 
     expression(paste("Reginald is ", phantom() %~~% phantom(), "14 years old")))

Причина, по которой ваша версия не сработала, заключается в том, что оператор %~~% ожидает быть частью выражения с чем-то слева и справа от него. phantom() предоставляет вам что-то, что (а) невидимо и (б) не занимает ширину - именно то, что вам нужно.

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

Я чему-то учусь каждый день. Брайан Диггс указывает в комментариях, что вы можете создать тот же эффект, проще просто пропустив запятые в выражении (в этом случае вам даже не нужен вложенный вызов paste()). Это лучшее решение:

text(50, 50, expression("Reginald is " %~~% "14 years old"))
...