Я делаю бокс-сюжеты, и у меня проблемы с легендой. В частности, я хочу написать «≥2: n = formatC (nrow (x))», но не могу объединить команды для символа ≥, функции, которая вычисляет nrow(x) и formatC(nrow(x), bigmark=","), которая должна давать номер строки с разделителем тысяч.

Что я пробовал до сих пор:

smoke <- matrix(c(1:1200),ncol=1,byrow=TRUE)
colnames(smoke) <- c("High")
smoke <- as.table(smoke)

pdf('test.pdf')
plot(NA,xlim=c(0,100),ylim=c(0,100))
legend(10,70,bquote(paste(NA>=2, ": n=", .(formatC(nrow(smoke)), big.mark=","))))
dev.off()

Что дает: ≥ 2: n=1200

Я бы хотел: ≥2: n=1,200

Похоже, что formatC не работает в кавычках, и я также хотел бы удалить пробел после символа ≥.

Я также пробовал:

legend(x,y, legend=c(expression(NA>=2), paste(": n=", formatC(nrow(smoke)), sep="")))

Что дает легенду в двух строках: <код> ≥ 2 : n = 1200

Ввод paste перед expression дает одну строку, но не преобразует> = в ≥.

Я экспортирую график как pdf, который в настоящее время работает для символа ≥. Я бы предпочел оставить это. Юникод не работает с pdf в моих руках.

Заранее спасибо, Филипп

r
1
user3485328 1 Апр 2014 в 18:17

1 ответ

Лучший ответ

У вас ) не в том месте сразу после smoke, поэтому он принимает аргумент big.mark как часть paste, а не formatC. Попробуй это:

legend(10,70,bquote(paste(NA>=2, ": n=", .(formatC(nrow(smoke), big.mark=",")))))

enter image description here

1
Julián Urbano 1 Апр 2014 в 18:27
Большое спасибо, я не заметил этой ошибки. Есть ли способ убрать пробел между ≥ и 2?
 – 
user3485328
1 Апр 2014 в 19:08
Вы можете удалить пробел, используя paste0 вместо paste или указав sep = "" в вызове paste.
 – 
Gregor Thomas
1 Апр 2014 в 20:10
Между и 2 нет лишнего пробела. Если вы сделаете просто legend(10,70,bquote(3>=2)), вы увидите, что это обычное пространство.
 – 
Julián Urbano
2 Апр 2014 в 04:42