1

我想将任意长的字符串传递给Rscript -e. 但是,似乎有一个长度限制。

考虑模式:

$ Rscript -e 'cat("some string goes here")'

如果字符串的长度为 9993(在我的机器上),则命令失败并无限期挂起。如果它的长度为 9992,它会根据需要输出字符串。(您的数字可能不同;如果您愿意,可以进行二进制搜索来找到它们。)失败看起来像这样:

WARNING: '-e cat("hihihihihihihihihihihihihihihihihihihihihihihihihihihihihihi!hihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihi

(请注意,字符串在我的控制台中以完全相同的方式被截断:这个输入字符串不是完整的输入字符串。这也意味着我知道有一个WARNING,但我不知道它在警告我什么!)

绕过这个限制的好方法是什么?我可以将内容粘贴在 下的临时文件中/tmp,但这让我觉得太乱了。

我真正想做的是使用Rscript(特别是knitr)作为文本过滤器:旧字符串进入,新字符串出现。

作为参考,这是我对这个过滤器的第一次迭代。问题是当输入变得太大时,会nanoc无限期地挂起。(我现在知道这是因为Rscript挂起;因此,这个问题。)

4

1 回答 1

2

这是 readline(或任何对标准输入负责的函数)的限制,而不是 Rscript 或 R。如果您不想遵循 Joshua 的建议从文件中获取源代码,那么您将需要重写系统的输入程序。

于 2014-03-08T00:08:57.500 回答