0

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 に接続を読み取り可能な状態に保つにはどうすればよいですか?

4

0 に答える 0