2013-04-25 3 views
2

Я хочу sprintf строку с "\" в нем, но он не работает:R, как выход «» в Sprintf

sprintf("& $\pm %s \delta$", 1.23) 
Error: '\p' is an unrecognized escape in character string starting ""& $\p" 

Я попытался:

sprintf("& $\\pm %s \\delta$", 1.23) 
[1] "& $\\pm 1.23 \\delta$" 

Но я нужен результат с "& $\pm 1.23 \delta"

Как я могу получить правильный результат?

ответ

2

Не уверен, что вы используете ее, но \\ будет работать, если вы пытаетесь использовать ее в .Rnw например, но R нуждается в \\. Если вы просто хотите вырезать и вставить его где-нибудь, оберните его cat, как в: cat(sprintf("& $\\pm %s \\delta$", 1.23))

+0

Нет ли лучшего способа, чем кошка (sprintf (...))? Двойные обратные косые черты, похоже, не работают, как в этом примере: sprintf («test \\% s», «test»), ничто из того, что я делаю, не дает одиночного обратного слэша, которое будет закрыто в cat (что просто кажется хакерским) –

0

The \ имеет особое использование. Например, \ n - это новый символ строки и будет напечатан как таковой, а не как «\ n».

Если вы хотите напечатать обратную косую черту, убегите с ним другой обратной косой чертой. Таким образом, «\» напечатает одиночную обратную косую черту.

Надеюсь, я помог.

0

просто напишите \\ - это даст вам одну косую черту. Это связано с тем, что косая черта является специальным символом, и ее необходимо удалить до ее печати;)

+0

Даже здесь, в переполнении стека, двойные косые черты - это специальная комбо, а для вывода двойной косой черты вам нужно написать тройную косую черту. Huh –