使用R填写文本文件

时间:2014-06-25 15:46:52

标签: string r text stringr

我有一个类似的文本文件:

  

"你好,

     

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

     

平均分别为%f和%f千克......"

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

这应该是非常简单的,但我找不到合适的方法 做到这一点。谢谢!

2 个答案:

答案 0 :(得分: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))

答案 1 :(得分: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。

您也可以在模板中执行循环。没有像sprintf那样的8192字符限制。