【问题标题】:R: How to separate character output in a loop?R:如何在循环中分离字符输出?
【发布时间】:2011-01-29 04:48:14
【问题描述】:

我正在寻找将字符串列表粘贴在一起以进入 SQL 语句的最佳方式...我在使用分隔栏时遇到问题 |在我不想打印时在开头打印:

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 语句的更好方法?

【问题讨论】:

    标签: r loops character separator


    【解决方案1】:

    也许使用collapse 选项:

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

    产量

    "bee|bar|baz"
    

    【讨论】:

      【解决方案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="|")
      

      【讨论】:

      • 实际上,无论有无 NULL,它都会给出相同的结果,不同之处在于将粘贴函数放置在 for 循环之外。谢了。
      • 谢谢约翰 - 我实际上意识到,当我发帖时,我忘了更改我的第一段。 =) 现在改变了。
      【解决方案3】:
      paste(rep(foo,4),collapse='|')
      
      [1] "blah|blah|blah|blah"
      

      【讨论】:

      • 谢谢,但字符串不同,所以 ~unutbu 的答案最合适
      • @John 您的问题和示例代码表明字符串是相同的。下次你可以提供所有有问题的信息。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-02
      • 2012-03-30
      • 1970-01-01
      • 2022-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多