如何在String中间打印R变量

时间:2010-08-18 19:42:02

标签: r

我正在尝试打印出包含String和变量混合的行。这是目前的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>

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

任何和所有帮助都非常感激。

此致

安东尼。

4 个答案:

答案 0 :(得分:21)

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

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

答案 1 :(得分:13)

你错过了一些额外的报价。试试这个:

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

以下是我的意思的一个实例:

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

答案 2 :(得分:1)

Cat工作正常,没有额外的库和转义:

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

输出:

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

答案 3 :(得分:0)

现在有一个非常方便的函数来执行字符串格式化,其工作方式与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>