r - 为什么在\n中将\n换行符引入\n?

标签 r text

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

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

由于文件确实很宽,所以列标题很长-总共不到29,800个字符。我将它们作为简单的字符串向量传递进来:

column_names <- c(...)

我将在这里为您保留丑陋的转储,但我将整个内容都放在了pastebin上。

当我发现我的某些子集返回0行时,正在清理并转换一些变量以进行分析。在迷惑了它之后(我拼错了吗?),它意识到以某种方式在我的列标题中引入了一堆'\n'换行符。

如果我遍历我创建的column_names向量
for (i in 1:length(column_names)) {
  print(column_names[i])
}

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

SPECIAL\nEDUCATION SCIENCE Number Enrolled Science



我试图解决此问题的途径:

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。
谢谢!

最佳答案

我怀疑这是一个错误。相反,您似乎遇到了控制台的已知限制。就像Section 1.8 - R commands, case sensitivity, etc.An Introduction to R中所说的:

Command lines entered at the console are limited[3] to about 4095 bytes (not characters).

[3] some of the consoles will not allow you to enter more, and amongst those which do some will silently discard the excess and some will use it as the start of the next line.



可以将命令放在文件中并对其进行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", ...)

关于r - 为什么在\n中将\n换行符引入\n?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13059083/

相关文章:

根据条件替换数据框中的行

Java 如何读取包含单独 XML 的文本日志文件并提取 XML block

javascript - 是否有针对 Javascript 的文本 API 的言论自由?

Java JTabbedPane无法添加多个选项卡?

css - 我无法选择我网站上的文本,我认为它被某些 css 掩盖了

r - 如何连接多个不相关的数据集

用于在一组字符串中查找最长的公共(public)起始子字符串的 R 实现

r - 使用 mutate 中的 distm 函数计算两点之间的距离

r - data.frame 中列的基于时间的平均(滑动窗口)

PowerShell:如何将 $env:HOSTNAME/$env:Computer) 作为文本替换的一部分插入到文本文件中?