2012-11-04 155 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年內維護你的代碼的人都會感謝你。 –