load()
で関数を呼び出そうとしていsocketConnection
ます。(2 つの R プロセス間で) 接続を確立するときに、ソケット情報を確認すると、次のように表示されます。
> s <- socketConnection(host = "localhost", 12345, server = FALSE, blocking=TRUE, open = "rb")
> s
description class mode text
"->localhost:12345" "sockconn" "rb" "binary"
opened can read can write
"opened" "yes" "yes"
接続は正常に開かれ、読み取り可能です (バイナリ モード)。ソケットから読み取ろうとすると、次のようになります。
> load(s)
Error in load(s) : connection not open for reading
ソケットが「can read=yes」と表示されているのに、エラー メッセージでは読み取り不能と表示されている理由を理解するのにしばらく時間がかかりました。を実行すると、接続が gzcon オブジェクトでラップされていることがわかりましたload()
。自分でラップすると、次のようになります。
> s
description class mode text
"->localhost:12345" "sockconn" "rb" "binary"
opened can read can write
"opened" "yes" "yes"
> z <- gzcon(s)
> z
description class
"gzcon(->localhost:12345)" "gzcon"
mode text
"rb" "binary"
opened can read
"opened" "no"
can write
"yes"
> s
description class
"gzcon(->localhost:12345)" "gzcon"
mode text
"rb" "binary"
opened can read
"opened" "no"
can write
"yes"
gzcon は接続を読み取り不能に変換します。私の質問は、ソケットからロードを実行するにはどうすればよいですか、または gzcon に接続を読み取り可能な状態に保つにはどうすればよいですか?