2010-03-18 10 views
0

Je blanking sur la meilleure façon de coller une liste de chaînes ensemble pour aller dans une instruction SQL ... J'ai des problèmes avec la barre de séparation | impression au début quand je ne veux pas que cela:R: Comment séparer les sorties de caractères dans une boucle?

foo = "blah" 
paste_all_together = NULL 
for (n in 1:4) { 
    paste_together =  paste(foo ,sep = "") 
    paste_all_together = paste(paste_all_together, paste_together, sep = "|") 
    } 

> paste_all_together 
[1] "|blah|blah|blah|blah" 

Je veux juste à imprimer « bla | bla | bla | bla ». Ai-je besoin d'une boucle imbriquée ou existe-t-il un meilleur itérateur dans R pour ce faire? Ou peut-être un meilleur moyen d'entrer des instructions SQL?

Répondre

2

peut-être utiliser l'option collapse:

foo = list('bee','bar','baz') 
paste(foo,collapse='|') 

cède

"bee|bar|baz" 
1
paste(rep(foo,4),collapse='|') 

[1] "blah|blah|blah|blah" 
+0

Merci, mais les cordes étaient différentes, La réponse de so ~ unutbu correspond mieux – John

+0

@John Votre question et votre exemple de code suggèrent que les chaînes sont les mêmes. La prochaine fois, vous pourriez donner toutes les informations en question. – Marek

+0

oui vous avez raison. – John

2

Le problème est en fait la première fois que vous appelez paste(paste_all_together,...) - il colle essentiellement la chaîne vide à "blah", mettre un | entre eux.

Il y a déjà 2 réponses qui sont ici mieux que ce que je suis sur le point de proposer, mais pour corriger votre exemple avec la chirurgie minimale ressemblerait à quelque chose comme ceci:

foo <- "blah" 
all_together <- character(0) 
for (n in 1:4) { 
    all_together <- c(all_together, foo) 
} 
paste(all_together, collapse="|") 
+0

ah super, ça l'explique! – John

+0

en fait, il donne le même résultat avec ou sans la valeur NULL, ce qui fait la différence est le placement de la fonction de collage en dehors de la boucle for. Tks. – John

+0

Merci John - Je me suis rendu compte que pendant que je posais mais j'ai oublié de changer mon premier paragraphe. =) Changer maintenant. –

Questions connexes