【问题标题】:Concatenate unwantedly applies max character width连接不必要地应用最大字符宽度
【发布时间】:2011-09-27 07:57:38
【问题描述】:

我正在尝试在一行上打印一些混合文本和变量。 c() 不必要地强制所有字符字段为最大字段的宽度,即在这种情况下为 12 个字符。如何获得简单的连接?

> print(c('Splitting col',i,'x<', xsplitval),quote=FALSE)
[1] Splitting col 9             x<            6.7   

(我已经检查了所有 SO 问题和所有 R 文档,包括打印、选项、格式和 R 邮件列表以及 Google 等)

【问题讨论】:

  • 顺便说一句,您可能会发现R 与大多数其他编程语言在细微和实质性方面都有所不同。它是为统计分析而设计的,因此与许多其他语言相比,它具有(并将继续具有)不同的目标。
  • 另一个可能对您有帮助的问题在这里:stackoverflow.com/q/3102643/210673

标签: r printing string-concatenation


【解决方案1】:

你可能想使用paste:

i <- 9
xsplitval <- 6.7

paste('Splitting col',i,'x<', xsplitval, sep="")
[1] "Splitting col9x<6.7"

【讨论】:

  • 不,paste 根本没有在 R(v2.13.1 for Windows)的 concatenate page 中提及。在打印文档中也没有提到它任何地方。打印示例使用 c()。巨大的遗漏。 – smci 7 分钟前
  • 是的,好吧,??concatenate 提出paste 就好了。不知何故,我怀疑您是否非常仔细地阅读了 R-intro 手册。
  • 我发现?print 文档更有帮助;它提到使用cat 进行更可定制的打印。
  • @smci:也许您正在查看?c 帮助页面? R 中没有名为concatenate 的函数;最接近的函数是 paste 本身。
【解决方案2】:

另一个选择是使用sprintf 函数,它允许一些数字格式:

i <- 9
xsplitval <- 6.7
sprintf("Splitting col %i, x<%3.1f", i, xsplitval)

【讨论】:

    【解决方案3】:

    为此,我建议使用连接和打印功能cat。另一个选项是message,它将输出发送到stderr。

    > i <- 9
    > xsplitval <- 6.7
    > cat('Splitting col ',i,' x<', xsplitval, '\n', sep="")
    Splitting col 9 x<6.7
    > message('Splitting col ',i,' x<', xsplitval, sep="")
    Splitting col 9 x<6.7
    

    c是将值组合成向量的函数;它将结果排列成等间距的列,以便更容易查看结果向量。

    > c('Splitting col ',i,' x<', xsplitval)
    [1] "Splitting col " "9"              " x<"            "6.7"  
    

    paste 将字符向量连接在一起,sprintf 类似于 C 函数,但两者都返回字符向量,这些字符向量(默认情况下)输出时带有引号和数字,给出每行输出开头的索引,所以你可能想用catmessage 包装它们。

    > s1 <- paste('Splitting col ',i,' x<', xsplitval, sep=""); s1
    [1] "Splitting col 9 x<6.7"
    > cat(s1,'\n')
    Splitting col 9 x<6.7 
    
    > s2 <- sprintf("Splitting col %i, x<%3.1f", i, xsplitval); s2
    [1] "Splitting col 9, x<6.7"
    > cat(s2,'\n')
    Splitting col 9, x<6.7 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-14
      • 1970-01-01
      • 2013-09-01
      • 1970-01-01
      • 2011-10-18
      • 2021-08-25
      • 2012-12-04
      相关资源
      最近更新 更多