2

我有一个这样的文本文件:

“你好,

我有 %d 只狗和 %d 只猫,

其中平均重量分别为 %f 和 %f 公斤..."

我正在尝试创建一个 R 函数,该函数将向量(例如c(2, 3, 3.4, 2.3))作为输入,并使用其条目来填充文本文件中的 %f 和 %d (以正确的顺序)。

这应该很简单,但我找不到合适的方法。谢谢!

4

2 回答 2

3

正如@MatthewPlourde 指出的那样,该sprintf功能在这里应该很有用。

a<-"Hello,
I have %d dogs and %d cats,
which on average weight respectively %f and %f kilograms... "

sprintf(a, 2, 3, 3.4, 2.3)

这确实需要将您的向量“解包”为参数。如果你确实有向量中的值,你可以这样做

v<-c(2, 3, 3.4, 2.3)
do.call(sprintf, c(list(a), v))
于 2014-06-25T15:54:07.413 回答
3

如果您可以使用brew包语法编写模板,则可以执行以下操作:

I have <%= ndogs %> dogs and <%= ncats %> cats which on
average weight <%= dogweight/ndogs %> and <%= catweight/ncats %> kg
respectively

然后安装brew,然后执行:

require(brew)
dogweight=23
catweight=12
ncats=4
ndogs=2
brew("animals.txt")

产生:

I have 2 dogs and 4 cats which on
average weight 11.5 and 3 kg
respectively

您可以将其发送到另一个文件或将其作为文本捕获到 R 中。

您还可以在模板中执行循环。没有 8192 个字符限制,例如sprintf.

于 2014-06-25T16:33:23.723 回答