У меня есть большой файл данных, загруженный в память в экземпляре R на одной машине, и я использую Rserve, чтобы разрешить доступ к этим данным от удаленных клиентов. Я хотел бы иметь возможность удаленно вносить изменения в data.frame, например добавление столбца или изменение значения, и я хотел бы, чтобы эти изменения были доступны другим клиентам.Изменение внутренних данных с помощью Rserve
# server side
> xxx<-data.frame(a=1:3,b=4:6)
> run.Rserve(port = 6311, ...)
# client side
> cc<-RSconnect(port=6311, ...)
> RSeval(cc,'xxx$c<-7:9')
> RSeval(cc,'xxx')
a b c
1 1 4 7
2 2 5 8
3 3 6 9
Однако, когда я соединяю со вторым клиентом он не видит изменений:
# another client
> cc2<-RSconnect(port=6311, ...)
> RSeval(cc2,'xxx')
a b
1 1 4
2 2 5
3 3 6
Когда сервер остановлен внутренний данные также без изменений. Изменения доступны только клиенту, который их создал, а не тому, что мне нужно.
Есть ли способ сделать эту работу?
Я бы использовал либо базу данных, либо внешний плоский файл для чтения/записи этими отдельными сеансами , С 'data.table'' fread' и 'fwrite' вы не заметите, что предполагаемые данные перегрузки являются разумными. –
Спасибо, я собирался это сделать, но затем я нашел способ сделать это напрямую, используя Rserve (см. Мой ответ ниже). –