2010-12-07 9 views
4

Comme il est indiqué dans le manuel Intro to R,Can R paste() sort ""?

paste("\\") 

impressions

[1] "\\" 

Est-il possible pour la pâte à imprimer

[1] "\" 

?

mise à jour: je ne voulais pas cette belle réponse de Gavin à se coincer dans les commentaires ci-dessous, donc je vais coller ici:

print(xtable(as.matrix("\\citep{citation}")), sanitize.text.function = function(x) {x}) 
+1

Quelle est votre vraie question? Est-ce que 'file.path()' pourrait aider? –

+0

Voulez-vous une sortie 'print()' -ed ou quelque chose comme 'cat()' ou 'writeLines()'? –

+0

@Dirk J'essaie de créer un vecteur à partir d'un vecteur de citations de bibtex qui renvoie "\ citep {citation}" de "citation", comme paste ("\ citep {", citation, "}", sep = '') @Gavin, vraisemblablement cat() fonctionnerait, mais j'utilisais paste() car il renvoie un vecteur à la place d'une chaîne d'un vecteur; Je pourrais utiliser une instruction apply si –

Répondre

4

qui est la version imprimée représentation d'un seul « \ ​​» dans l'affaire R. Il est clair que la bonne réponse dépendra de votre utilisation finale, mais quelque chose comme ça do:

> citations <- paste("title", 1:3, sep = "") 
> cites <- paste("\\citep{", citations, "}", sep = "") 
> writeLines(cites) 
\citep{title1} 
\citep{title2} 
\citep{title3} 

en utilisant writeLines() vous pouvez produire que dans un fichier en utilisant SOMET Hing comme:

> writeLines(cites, con = file("cites.txt")) 

résultant dans le fichier suivant:

$ cat cites.txt 
\citep{title1} 
\citep{title2} 
\citep{title3} 
6

Vous confondez comment quelque chose est stocké et comment il "imprime". Vous pouvez utiliser paste pour combiner un \ avec autre chose, mais si vous l'imprimez, alors la représentation imprimée devra \ échapper le \, mais si vous l'éditez dans un fichier ou l'écran en utilisant cat, alors vous obtenir le seul \, par exemple:

> tmp <- paste("\\", "cite{", sep="") 
> print(tmp) 
[1] "\\cite{" 
> cat(tmp, "\n") 
\cite{ 
+0

cf. http://upload.wikimedia.org/wikipedia/fr/b/b9/MagrittePipe.jpg – hadley

1

Une façon de faire est est d'utiliser la commande write, par exemple

> write("\\", file="") 
\ 

écriture est généralement utilisé pour écrire des fichiers, vous devez définir file="" pour l'obtenir pour imprimer STDOUT.

Le \ est répété dans la commande d'écriture de sorte qu'il n'échappe pas au guillemet fermant.

Je ne sais pas si c'est la bonne façon de le faire, mais cela fonctionne pour moi. Editer: Réalisé légèrement trop tard que vous utilisiez la commande paste(). Espérons que ma réponse présente encore un certain intérêt pour votre sort. Excuses.