【发布时间】:2015-12-28 00:39:54
【问题描述】:
R 的sprintf 已预设最大输入长度设置为 8192 字节:
sprintf(x, y)
Error in sprintf(x, y) : 'fmt' length exceeds maximal format length 8192
较长的输入字符串的解决方法是什么?我了解到在 C 中有 snprintf 函数用于这种情况,但这似乎在 R 中不可用,不是吗?
例子
输入文件类似于
select *
from some_table
where a = '%s' and
b = %d and
c in (%s) and
d = %s and
e >= %0.2f
但是很多更复杂并且很多更长。我需要用一些值替换所有值。 sprintf 非常适合,但我正在使用的输入脚本之一太长了。我需要替换多个不同的参数,并且参数具有不同的格式(字符串、双精度、浮点)。要替换的值位于输入文件的不同部分,因此我需要按给定顺序搜索和替换它们。我知道 this approach 到参数化查询,但需要使用不同的库 (RPostgreSQL)。
【问题讨论】:
-
您有时可以将
sprintf替换为paste等函数。你不能举一个具体的最小例子吗? -
进一步参数化你的格式字符串?
-
@James 我不明白你的意思..?
-
例如
select * from long_table_name where ...变成select * from %s where ... -
@James 这个例子很像我现实生活中的问题,有字符串和数字要替换,大多数情况下替换值是短字符串(比如