2010-03-18 61 views
0

我对将字符串列表粘贴到一起以进入SQL语句的最佳方法是空白的......我遇到了分隔条问题|在我不想要的时候开始打印:R:如何分离循环中的字符输出?

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" 

我只是想让它打印出“blah | blah | blah | blah”。我是否需要一个嵌套循环,或者在R中有更好的传播器吗?或者更好的方式来输入SQL语句?

回答

2

也许使用collapse选项:

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

产生

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

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

谢谢,但字符串是不同的,所以〜unutbu的回答最合适 – John 2010-03-18 21:16:29

+0

@John你的问题和示例代码表明字符串是相同的。下次您可以提供所有有问题的信息。 – Marek 2010-03-18 22:13:46

+0

是的,你是对的。 – John 2010-03-19 20:15:24

2

这个问题实际上是你第一次叫paste(paste_all_together,...) - 它本质上粘贴的空字符串"blah",把一个它们之间有|

有已经在这里2个答案是比我要提出更好的,但解决您的例子以最小的手术会是这个样子:

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

啊太棒了,就这样解释吧! – John 2010-03-19 20:16:17

+0

实际上,它带有或不带NULL的结果相同,不同之处在于for循环之外的粘贴函数的位置。韩国社交协会。 – John 2010-03-19 21:38:12

+0

谢谢约翰 - 我实际上意识到,虽然我发布,但我忘了改变我的第一段。 =)现在改变。 – 2010-03-22 14:10:15