2014-03-06 7 views
8

Ich versuche, eine Funktion zu schreiben, die scales::dollar entspricht, die ein Pfund (£) -Symbol an den Anfang einer Zahl hinzufügt. Da der Skalencode so robust ist, habe ich ihn als Rahmen verwendet und einfach das $ für das £ ersetzt.Verwenden von Nicht-ASCII-Zeichen innerhalb von Funktionen für Pakete

Eine abgespeckte Funktion Beispiel:

pounds<-function(x) paste0("£",x) 

Wenn ich ein Prüflauf erhalte ich die folgende:

Found the following file with non-ASCII characters: 
    pounds.R 
Portable packages must use only ASCII characters in their R code, 
except perhaps in comments. 
Use \uxxxx escapes for other characters. 

Blick durch die Schreiben R Erweiterungen führen es kein nicht geben viel Hilfe (IMO) zur Lösung dieses Problems. Es erwähnt das \ uxxxx und sagt, dass es sich auf Unicode-Zeichen bezieht.

Nachschlagen Unicode-Zeichen gibt mir den Code &#163 aber die Anleitung, die ich für \uxxxx finden kann, ist minimal und bezieht sich auf Java auf W3schools.

Meine Frage ist also:

Wie beurteilen Sie die Verwendung von Nicht-Unicode-Zeichen in R-Funktionen mit der \ implementieren uXXXX entweicht und wie die Nutzung der Anzeige solcher Zeichen beeinflussen, nachdem die Funktion verwendet wurde, ?

+0

Als Referenz - siehe diese Frage, die fast identisch ist: http://StackOverflow.com/Q/11452796/602276 – Andrie

+0

Cheers @Andrie - nicht sicher, wie ich das nicht in meinem googling das erste Mal gefunden habe. Karsten fügt wertvolle Informationen dazu hinzu, wie der Unicode identifiziert werden kann - ich würde vorschlagen, sie als Duplikat zu markieren. –

+0

Da diese Frage auch beantwortet wird, können wir nicht als Duplikat schließen. Es gibt einen Prozess zum Zusammenführen von ähnlichen Fragen, aber ich habe keine Zeit, dies zu tun. Für mich ist es gut genug, dass die Fragen verknüpft sind. Wenn jemand anderes die Verschmelzung initiieren möchte, ist das auch in Ordnung. – Andrie

Antwort

10

Für die \ uXXXX entweicht, müssen Sie die hexadezimale Zahl Ihres Charakters kennen. Sie können es charToRaw mit bestimmen:

sprintf("%X", as.integer(charToRaw("£"))) 
[1] "A3" 

Jetzt können Sie so Ihre Nicht-ASCII-Zeichen zu spezifizieren. Sowohl \u00A3 als auch £ repräsentieren das gleiche Zeichen.

Verwandte Themen