2017-07-14 18 views
13

ऐसा लगता है कि चरित्र प्रकार की एक संयोजन एक स्पष्ट पेस्ट आपरेशन के परिणामस्वरूप आदेश के लिए अप्रत्याशित परिणाम उत्पन्न कर सकते:बाएँ और दाएँ गठबंधन चरित्र प्रकार श्रृंखलाबद्ध

(x = paste(c('green','أحمر', 'أزرق'), collapse=' ')) # arabic for blue and red 
#> [1] "green أحمر أزرق" 
paste(x, 'yellow') 
#> [1] "green أحمر أزرق yellow" 
paste(x, 123) 
#> [1] "green أحمر أزرق 123" 

वहाँ इस के लिए किसी भी नाम से जाना जाता समाधान है - यानी एक तर्क के रूप में एक ही अनुक्रम में concatenation सुनिश्चित करने के लिए रास्ता? शायद उत्तर है विभिन्न वर्णमाला को संगत न करें!

+0

यहां तक ​​कि एक टेक्स्ट एडिटर में 'x = पेस्ट (सी (' हरा ', <विदेशी पाठ>, 123, पतन =' ') टाइप करना भी एक समान मुद्दा देता है। मैं इसे यहां भी सही तरीके से प्रारूपित नहीं कर सकता ... – CPak

+0

मुझे अनिश्चितता है, लेकिन यह हमेशा एलटीआर (बाएं से दाएं) के रूप में एन्कोड किए जाने के कारण है, इसलिए यह '123' है। लेकिन अरबी के बाईं ओर अरबी पाठ के बाईं ओर जोड़ा गया है - इसलिए बाद में अरबी पाठ में। – m0nhawk

उत्तर

3

आप ("के रूप में बाएँ से सही एम्बेडेड निम्न पाठ दावत") 'left-to-right embedding', u202A यूनिकोड नियंत्रण वर्णों का उपयोग कर सकते हैं:

paste(x, "\u202A", 123) 
# [1] "green أحمر أزرق ‭ 123" 

भी देखें Terminating Explicit Directional Embeddings and Overrides, (u202C), एक पूरी तरह से UNICODE BIDIRECTIONAL ALGORITHM पर विवरण, और here पर विवरण।

+0

अच्छी तरह मक्खन मेरे पार्सनिप्स। [U + 1F4AA] – geotheory

संबंधित मुद्दे