【发布时间】:2010-02-13 18:04:37
【问题描述】:
我在 R 中有一个进程,它创建一堆对象,将它们序列化,然后将它们放入纯文本文件中。这似乎是一种处理事情的好方法,因为我正在使用 Hadoop,所有输出都需要通过标准输入和标准输出流式传输。
我剩下的问题是如何从文本文件中读取这些对象并返回到我桌面机器上的 R 中。这是一个说明挑战的工作示例:
让我们创建一个 tmp 文件并将一个对象写入其中。这个对象只是一个向量:
outCon <- file("c:/tmp", "w")
mychars <- rawToChar(serialize(1:10, NULL, ascii=T))
cat(mychars, file=outCon)
close(outCon)
mychars 对象如下所示:
> mychars
[1] "A\n2\n133633\n131840\n13\n10\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n"
当写入文本文件时,它看起来像这样:
A
2
133633
131840
13
10
1
2
3
4
5
6
7
8
9
10
我可能忽略了一些非常明显的东西,但是我如何将该文件读回 R 并反序列化该对象?当我尝试 scan() 或 readLines() 时,都想将换行符视为记录分隔符,我最终得到一个向量,其中每个元素都是文本文件中的一行。我真正想要的是一个包含文件全部内容的文本字符串。然后我可以反序列化字符串。
Perl 会将换行符读回字符串,但我不知道如何覆盖 R 处理换行符的方式。
【问题讨论】:
标签: r serialization