【问题标题】:How to print R variables in middle of String如何在字符串中间打印R变量
【发布时间】:2010-08-18 19:42:02
【问题描述】:

我正在尝试打印出包含字符串和变量混合的行。这是目前的R代码:

cat("<set name=\",df$timeStamp,\" value=\",df$Price,\" ></set>\n")

这是运行时打印出来的内容:

<set name=",df$timeStamp," value=",df$Price," ></set>

我希望打印出 df$timeStamp 和 df$Price 的值。例如,我想要以下内容:

<set name="2010-08-18 12:00:59" value="17.56" ></set>

知道我在代码中哪里出错了吗?

非常感谢任何和所有帮助。

问候,

安东尼。

【问题讨论】:

    标签: r


    【解决方案1】:

    问题是 R 不评估带有引号的 any 表达式 - 它只是打印您定义的字符串。有多种方法可以解决它。例如,您可以使用sprintf 函数(未经测试,因为您没有提供可重现的示例):

       cat(sprintf("<set name=\"%s\" value=\"%f\" ></set>\n", df$timeStamp, df$Price))
    

    【讨论】:

    • 当使用单引号时,这使得整个事情更容易阅读......cat(sprintf('&lt;set name="%s" value="%f" &gt;&lt;/set&gt;\n', df$timeStamp, df$Price))
    【解决方案2】:

    您缺少一些额外的引号。试试这个:

    cat('<set name=\"',df$timeStamp,'\" value=\"',df$Price,'\" ></set>\n')
    

    这是我的意思的一个工作示例:

    cat("a b c -> \"", letters[1:3], "\"\n")
    

    【讨论】:

    • 如果你想要超级流畅,你可以避免转义引号(在这种情况下),通过使用单引号来描述字符串并在其中使用双引号:cat('a b c -&gt; "', letters[1:3], '"\n')跨度>
    【解决方案3】:

    现在有一个非常方便的函数来执行字符串格式化,其工作方式与 Python f-strings 非常相似。 str_gluestringr 包的一部分。

    library(stringr)
    
    str_glue('<set name="{df$timeStamp}" value="{df$Price}"></set>')
    
    # <set name="2010-08-18 12:00:59" value="17.56"></set>
    

    【讨论】:

      【解决方案4】:

      Cat 工作正常,无需额外的库和转义:

      cat('<set name="', df$timeStamp, '" value="', df$Price, '"></set>\n', sep='')
      

      输出:

      <set name="2010-08-18 12:00:59" value="17.56"></set>
      

      【讨论】:

      • 这与 Shane 的回答几乎相同。添加sep 参数可能应该是对他的回答的评论,而不是新帖子。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-12
      • 1970-01-01
      • 1970-01-01
      • 2014-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多