【发布时间】:2017-11-29 11:46:33
【问题描述】:
在 python 中有一个很好的函数 (str .format) 可以很容易地将字符串中的变量(编码为 {variable})替换为存储在 dict 中的值(使用变量名命名的值)。像这样:
vars=dict(animal="shark", verb="ate", noun="fish")
string="Sammy the {animal} {verb} a {noun}."
print(string.format(**vars))
鲨鱼萨米吃了一条鱼。
R 中最简单的解决方案是什么?是否有一个内置的等效 2 参数函数,它接受一个字符串,其中变量编码 相同
方式并将它们替换为来自命名list的命名值?
如果 R 中没有内置函数,那么发布的包中是否有内置函数?
如果已发布的包中没有,你会用什么来编写?
规则:字符串是用编码为“{variable}”的变量提供给您的。变量必须编码为list。我会用我的定制版本来回答,但会接受比我做得更好的答案。
【问题讨论】:
-
我会非常自信地伸出脖子说“不”。未内置在基础 R 中。附加包中可能存在与此完全相同的内容。有 类似 的东西可以进行变量替换(例如 brew 包),但您希望使用这种 {name} 语法精确编码的格式,是吗?
-
是的;该字符串已经为以 python 为中心的分析而构建,因此我无法更改变量的编码方式。
-
brew使用<%=和%>作为标记。如果您不希望字符串中出现<%=或在任何地方转义了{},则用它们替换{和}会起作用。 -
我不知道 R 中格式函数的任何等效项,但是您有一个 printf C 函数的等效项,它允许您放置要打印的内容和变量列表。见rdocumentation.org/packages/R.utils/versions/2.5.0/topics/…
-
sprintf()是核心包中最接近的。它不使用命名替换组,但可以做索引组:sprintf("%1$s %1$s %2$s %3$s", "a", "b", "c")