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

时间:2012-10-24 22:54:51

标签: r text

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

尝试导入和清理固定宽度格式的非常宽的数据文件 (http://www.state.nj.us/education/schools/achievement/2012/njask6/,'数据运行的文本文件')。遵循UCLA tutorial使用read.fwf和this优秀的SO问题,在导入后给出列名称。

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

column_names <- c(...)

我会在这里饶恕丑陋的转储,但我将整件事丢弃在pastebin上。

当我注意到我的一些子集返回0行时,正在清理和转换一些变量以进行分析。在困惑之后(我拼错了什么?)它意识到不知何故有一堆&#39; \ n&#39;我的列标题中引入了换行符。

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

for (i in 1:length(column_names)) {
  print(column_names[i])
}

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

  

特殊科学编号登记科学

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

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

2)是否有GUI设置?做了一些searching,但找不到任何东西。

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

我尝试将长字符串分解为shorter chunks,然后将它们组合起来,这似乎解决了这个问题。

column_names.1 <- c(...)
column_names.2 <- c(...)
column_names_combined <- c(column_names.1, column_names.2)

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

与角色向量问题有关的一些posts建议我运行内存配置文件:

  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 

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

1 个答案:

答案 0 :(得分:12)

我怀疑这是一个错误。相反,看起来你遇到了控制台的已知限制。正如在Section 1.8 - R commands, case sensitivity, etc.An Introduction to 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", ...)