为什么以及在哪里将新行字符引入c()?

And*_*rew 9 text r

希望有人可以帮助我理解为什么错误的\n字符出现在我在R中创建的字符串向量中.

尝试导入并清理固定宽度格式的非常宽的数据文件(http://www.state.nj.us/education/schools/achievement/2012/njask6/,'Text file for data runs').遵循加州大学洛杉矶分校关于使用read.fwf和这个优秀的SO问题的教程,在导入后给出列名.

因为文件非常宽,所以列标题很长 - 所有这些都在一起,不到29,800个字符.我将它们作为简单的字符串向量传递:

column_names <- c(...)
Run Code Online (Sandbox Code Playgroud)

我会把这个丑陋的垃圾扔给你,但是我把整个东西放在了pastebin上.

当我注意到我的一些子集返回0行时,正在清理和转换一些变量以进行分析.在困惑之后(我拼错了什么?)它意识到我的列标题中已经引入了一堆'\n'换行符.

如果我遍历我创建的column_names向量

for (i in 1:length(column_names)) {
  print(column_names[i])
}
Run Code Online (Sandbox Code Playgroud)

我看到第81行中间的第一个换行符 -

特殊科学编号登记科学

我尝试解决这个问题的途径:

1)这是关于我的环境的吗?我正在使用R中的常规脚本编辑器,我的线条换行- 但是我的屏幕上的断点与\n字符的位置不匹配,这对我来说表明它不是R脚本编辑器.

2)是否有GUI设置?做了一些搜索,却找不到任何东西.

3)有模式吗?似乎换行字符大约每4000个字符插入一次.对R/S原语进行了一些阅读以试图弄清楚这是否与基本的R数据结构有关,但很快就在我脑海中.

我尝试将长串分解成更短的块,然后将它们组合起来,这似乎解决了这个问题.

column_names.1 <- c(...)
column_names.2 <- c(...)
column_names_combined <- c(column_names.1, column_names.2)
Run Code Online (Sandbox Code Playgroud)

所以我有一个即时的解决方法,但很想知道这里发生了什么.

一些与字符向量问题有关的帖子建议我运行内存配置文件:

  memory.profile()
        NULL      symbol    pairlist     closure environment     promise 
           1        9572      220717        4734        1379        5764 
    language     special     builtin        char     logical     integer 
       63932         165        1550       18935       10302       30428 
      double     complex   character         ...         any        list 
        2039           1       60058           0           0       20059 
  expression    bytecode externalptr     weakref         raw          S4 
           1       16553         725         150         151        1162 
Run Code Online (Sandbox Code Playgroud)

我在Windows 7上运行R 2.15.1(64位)R(Enterprise,SP 1,8 gigs RAM).谢谢!

Jos*_*ich 12

我怀疑这是一个错误.相反,看起来你遇到了控制台的已知限制.因为它说在第1.8节- R命令,壳体灵敏度等介绍至R:

在控制台输入的命令行被限制[3]到大约4095字节(不是字符).

[3]有些游戏机不允许你输入更多,有些游戏机会默默地丢弃多余的游戏机,有些游戏机会将它作为下一行的起点.

将命令放在文件中source,或者通过在适当的位置(逗号之间)插入自己的换行符将代码分成多行.例如:

column_names <-
  c("County Code/DFG/Aggregation Code", "District Code", "School Code",
    "County Name", "District Name", "School Name", "DFG", "Special Needs",
    "TOTAL POPULATION TOTAL POPULATION Number Enrolled LAL", ...)
Run Code Online (Sandbox Code Playgroud)

  • @Andrew:它在`src/include/Defn.h`中被硬编码:`#define CONSOLE_BUFFER_SIZE 4096`,因此它是数据结构的限制. (3认同)