Объединение типов символов влево и вправо
Кажется, что комбинации типов символов могут приводить к неожиданным результатам для результирующего порядка явной операции вставки:
(x = paste(c('green','أحمر', 'أزرق'), collapse=' ')) # arabic for blue and red
#> [1] "green أحمر أزرق"
paste(x, 'yellow')
#> [1] "green أحمر أزرق yellow"
paste(x, 123)
#> [1] "green أحمر أزرق 123"
Есть ли какое-либо известное решение для этого - то есть способ обеспечения конкатенации в той же последовательности, что и аргументы? Возможно, ответ заключается не в конкатенации разных алфавитов!
Ответы
Ответ 1
Вы можете использовать управляющие символы Unicode "вставка слева направо" , u202A
( "Рассматривать следующий текст как встроенный слева-направо" ):
paste(x, "\u202A", 123)
# [1] "green أحمر أزرق 123"
См. также Завершение Явных Направленных Вложений и Переопределений, (u202C
), подробное описание UNICODE BIDIRECTIONAL ALGORITHM и здесь.