希望有人可以帮助我理解为什么错误的\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 …Run Code Online (Sandbox Code Playgroud)