我有一个包含大量多行文本 block 的文件。我想将该文件读入一个字符向量列表——每个 block 一个。我对 scan()、read.table() 等函数的文档的阅读似乎表明一行的结尾将结束向量。是否有一些选项或其他函数允许我指定一个分隔字符并且在遇到该字符之前不会转到新向量?
最佳答案
R read.csv
观察 RFC 4180关于 csv 文件的格式,因此如果您的文件以这种方式格式化,它们将被正确读取。基本上,如果用双引号括起来,带有嵌入式回车符的长文本字段将被读取为一个字段(包括换行符)。如果文本本身有引号怎么办?这就是问题所在,您要阅读的文本中的内嵌引号必须用两个连续的引号 ("") 代替。
这是一个例子:
> 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 的相关部分:
Fields containing line breaks (CRLF), double quotes, and commas should be enclosed in double-quotes. For example:
"aaa","b CRLF
bb","ccc" CRLF
zzz,yyy,xxx
If double-quotes are used to enclose fields, then a double-quote appearing inside a field must be escaped by preceding it with another double quote. For example:
"aaa","b""bb","ccc"
关于将多行文本 block 读入 R 中的单个向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23861749/