将多行文本块读入R中的单个向量

时间:2014-05-26 01:58:30

标签: r multiline read.csv

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

1 个答案:

答案 0 :(得分:2)

R read.csv在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

  2.   
  3. 如果使用双引号括起字段,则使用双引号      出现在一个字段内必须通过前面的方式进行转义      另一个双引号。例如:

         

    " AAA"" B"" BB"" CCC"

  4.