希望有人可以帮助我理解为什么错误的 \n 字符会出现在我在 R 中创建的字符串向量中。
尝试导入和清理固定宽度格式的非常宽的数据文件(http://www.state.nj.us/education/schools/achievement/2012/njask6/,“数据运行的文本文件”)。按照加州大学洛杉矶分校关于使用 read.fwf的教程和这个优秀的 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 注册科学编号
我试图解决这个问题的途径:
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)
所以我有一个直接的解决方法,但很想知道这里到底发生了什么。
一些与字符向量问题有关的帖子建议我运行内存配置文件:
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。谢谢!