Format d'instruction print
Je voudrais format de sortie d'une instruction d'impression de sorte que les éléments dans l'instruction print
sont séparés par une petite uniforme à l'écart, un écart de 1, 3 ou 5 espaces vides. C'est que
possible?
Dans l'exemple ci-dessous, je pense que tous les éléments dans le rapport d'impression sont supposés être
aussi longtemps que le premier élément dans l'instruction print (ici, soit aussi longtemps que aa1
ou aa2
).
La print.gap
déclaration ne résulte pas dans le format souhaité. Il ajoute simplement une
supplémentaires constante nombre d'espaces entre chaque élément.
aa1 <- 'abcdefghijklmnopqrstuvwxyz'
aa2 <- 'abc'
bb <- 10
cc <- 222
print(c(aa1,bb,cc))
# [1] "abcdefghijklmnopqrstuvwxyz" "10" "222"
print(c(aa2,bb,cc))
# [1] "abc" "10" "222"
# desired output:
# [1] "abcdefghijklmnopqrstuvwxyz" "10" "222"
#
# or
#
# [1] "abcdefghijklmnopqrstuvwxyz" 10 222
Je vous remercie pour tous les conseils. Peut-être que je doit utiliser un cat
déclaration et sprintf
au lieu d'un print
déclaration. Peut-être une variante de ceci: Comment imprimer des R variables en milieu de Chaîne
sprintf()
ou paste(aa1,bb,cc,sep=" ")
pourrait être ce dont vous avez besoin.OriginalL'auteur Mark Miller | 2012-10-02
Vous devez vous connecter pour publier un commentaire.
Cela vous aidera à mi-course:
Je dis "en cours" car le code ci-dessus ne prend pas soin de l'habillage de ligne: si vous donnez une très longue vecteur de chaînes de caractères, ils seront tous d'un chat à un seul très long non ligne d'emballage...
Modifiée pour afficher une méthode d'emballage de la lignes:
Vous pouvez obtenir de l'habillage de ligne en utilisant une combinaison de
strwrap()
(merci @mnel) etgsub()
, :(L'appel à
gsub()
est nécessaire si plus d'un espace est nécessaire entre les éléments du vecteur, parce questrwrap()
détruit les espaces dans l'entrée.)strwrap
pour envelopper à certaines sensible de la longueur (commeoptions()$width
) par exemplecat(strwrap(paste(rep(dQuote(x),10), collapse=" "), 80), "\n")
Nice. Malheureusement,
cat(strwrap(paste(rep(dQuote(x),10), collapse=" "), 80), sep="\n")
semble que laisser un espace entre les éléments, peu importe combien vous spécifiez dans lacollapse=
argument... une idée d'un moyen de contourner cela?J'essayais juste de l'écrire comme une réponse et de trouver la même question. Toujours à la recherche d'une solution
OriginalL'auteur Josh O'Brien
Je vais poster mon commentaire comme une réponse
vous pouvez créer votre propre
print.character
méthode et l'utilisationstrwrap
d'une pellicule sensible à la longueur de ligne.Malheureusement
strwrap
détruit tous les espaces et le remplace par un espace uniqueIl ne fonctionnera pas comme prévu avec les espaces contenus dans les variables de caractères
strwrap()
était votre idée, n'hésitez pas à modifier le vôtre ajouter si vous pensez que cela fonctionne assez bien:cat(gsub(" ", " ", strwrap(paste(rep(dQuote(x),10), collapse=" "), 70)), sep="\n")
.OriginalL'auteur mnel