2012-11-04 109 views
4

可能重复:
Why and where are \n newline characters getting introduced to c()?粘贴字符限制

我正在R(2.15.1版本)在bash壳(版本4.2.36(1))在GNOME终端(版本3.4.1.1)。有时我会将我的代码写入文本文件,然后直接将其粘贴到控制台(运行R时)。除非我粘贴的脚本长得很长,否则我没有任何问题。现在,看起来任何大于4206个字符的代码(包括\n)都被拒绝(即,前4206个字符被接受,其余代码被截断;截断伴随着终端“钟”声)。此字符限制并非特定于bash或GNOME终端,因为我粘贴到例如vi时未观察到字符限制。因此,我怀疑字符限制是由R强加的,但不知道如何改变它,假设它是用户可配置的参数。粘贴限制是否可以改变,如果是这样,什么参数支配它?

回答

8

它看起来像你遇到了控制台的已知限制。因为它说在An Introduction to RSection 1.8 - R commands, case sensitivity, etc.:输入在控制台

命令行被限制[3]至约4095个字节(而不是字符)。

[3]一些控制台不允许你输入更多,其中有些会默默地放弃多余的,有些会使用它作为下一行的开始。

要么把命令在文件和source,或者通过在适当的点插入自己的换行(逗号之间)打破代码为多行。

该值在src/include/Defn.h#define CONSOLE_BUFFER_SIZE 4096中进行了硬编码,所以您需要重新编译R才能对其进行更改。

+0

你不仅了解这个限制,而且你知道哪个C代码声明是负责任的。如果我感到烦恼,我会重新编译。似乎任意限制到4k。感谢您指出了这一点。 – user001

+0

您也可以在代码中添加一些回车符。这不仅容易得多,而且在5年内维护你的代码的人都会感谢你。 –