개체 묶음을 만들고 직렬화 한 다음 일반 텍스트 파일로 변환하는 프로세스가 있습니다. 이것은 Hadoop과 함께 작업하고 모든 출력물이 stdin 및 stdout을 통해 스트리밍해야하기 때문에 상황을 처리하는 좋은 방법처럼 보였습니다.R : 개체를 텍스트 파일로 직렬화 한 후 다시
내가 남긴 문제는 텍스트 파일에서 이러한 개체를 읽고 내 데스크톱 컴퓨터에서 R으로 다시 보내는 방법입니다. 다음은 도전 과제를 보여주는 작업 예제입니다.
tmp 파일을 만들고 단일 개체를 작성해 봅시다.
이outCon <- file("c:/tmp", "w")
mychars <- rawToChar(serialize(1:10, NULL, ascii=T))
cat(mychars, file=outCon)
close(outCon)
mychars 객체는 다음과 같습니다 :
A
2
133633
131840
13
10
1
2
3
4
5
6
7
8
9
10
아마 해요 :
> mychars
[1] "A\n2\n133633\n131840\n13\n10\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n"
텍스트에 기록하는 경우는 다음과 같습니다 파일이 객체는 벡터이다 뭔가 끔찍한 명백한 내려다,하지만 어떻게 다시이 파일을 읽고 개체를 unserialize합니까? scan() 또는 readLines()를 시도 할 때 줄 바꿈 문자를 레코드 구분 기호로 취급하고 텍스트 파일의 각 요소가 벡터 인 벡터로 끝납니다. 필자가 정말로 원하는 것은 파일의 전체 내용을 담은 텍스트 문자열입니다. 그런 다음 문자열을 비 직렬화 할 수 있습니다.
Perl은 줄 바꿈을 문자열로 다시 읽지 만 R이 줄 바꿈을 처리하는 방법을 재정의하는 방법을 알아낼 수 없습니다.
필자는 내 객체를 원시 상태로 유지해야 했으므로 Hadoop에서 R을 사용하여 얻은 교훈을 함께 배울 때주의해야합니다. 필자가 놓친 부분은 readChar() 함수와 같습니다. 감사합니다. Dirk! –
. 그리고 나는 물론 RProtoBuf 패키지를 연결하는 것을 잊어 버렸습니다! Windows 바이너리는 아직 없지만 R과 링크하기에 적합한 MinGW 빌드 버전이 없습니다. –