3

我有一个包含大的多行文本块的文件。我想将文件读入一个字符向量列表——每个块一个。我阅读有关 scan()、read.table() 等函数的文档似乎表明行尾将结束向量。是否有一些选项或其他功能允许我指定分隔字符并且在遇到该字符之前不会转到新向量?

4

1 回答 1

2

R在 csv 文件的格式上read.csv遵守RFC 4180,因此如果您的文件以这种方式格式化,它们将被正确读取。基本上带有嵌入回车的长文本字段如果用双引号括起来,将被视为一个字段(包括换行符)。如果文本本身包含引号怎么办?这就是问题所在,您尝试阅读的文本中的嵌入引号必须替换为两个连续的引号(“”)。

这是一个例子:

> read.csv(stringsAsFactors = FALSE, text = '
+ id, text
+ 1, Hello World
+ 2, "Hello
+ World"
+ 3, "I say ""Hello 
+ World"" often"
+ ')

  id                         text
1  1                  Hello World
2  2                 Hello\nWorld
3  3  I say "Hello \nWorld" often

以下是 RFC 的相关部分:

  1. 包含换行符 (CRLF)、双引号和逗号的字段应该用双引号括起来。例如:

    "aaa","b CRLF

   bb","ccc" CRLF
   zzz,yyy,xxx
  1. 如果使用双引号将字段括起来,则出现在字段内的双引号必须通过在其前面加上另一个双引号来进行转义。例如:

    "aaa","b""bb","ccc"

于 2014-05-26T02:03:59.030 回答