RProtoBuf v0.4.15


Monthly downloads



R Interface to the 'Protocol Buffers' 'API' (Version 2 or 3)

Protocol Buffers are a way of encoding structured data in an efficient yet extensible format. Google uses Protocol Buffers for almost all of its internal 'RPC' protocols and file formats. Additional documentation is available in two included vignettes one of which corresponds to our 'JSS' paper (2016, <doi:10.18637/jss.v071.i02>. Either version 2 or 3 of the 'Protocol Buffers' 'API' is supported.


RProtoBuf Build Status License CRAN Dependencies Downloads

R Interface to Google Protocol Buffers

What are Protocol Buffers?

A serialization format developed by Google and used widely within Google, and by numerous other projects. Quoting from the official website:

Protocol buffers are Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data – think XML, but smaller, faster, and simpler. You define how you want your data to be structured once, then you can use special generated source code to easily write and read your structured data to and from a variety of data streams and using a variety of languages.

Protocol Buffers natively support C++, C#, Go, Java and Python. Many other languages are supported via contributed extensions. This package adds support for R.


You can either install from source via this repo, or install the CRAN package the usual way from R via


but do make sure you have the system requirements covered when building from source.

Under Debian/Ubuntu you may need

sudo apt-get install protobuf-compiler libprotobuf-dev libprotoc-dev

with similar commands on other operating systems or distributions.


The package contains two pdf vignettes; the second one corresponds to our JSS paper.


Romain Francois, Dirk Eddelbuettel, Murray Stokely and Jeroen Ooms


GPL (>= 2)

Functions in RProtoBuf

Name Description
FileOutputStream-methods Creates an FileOutputStream
GetErrno-methods Get the error number for an I/O error
MethodDescriptor-class Class "MethodDescriptor"
Message-class Class "Message"
ServiceDescriptor-class Class "ServiceDescriptor"
ByteCount-methods The number of bytes read/written since the object was created
FileDescriptor-class Class "FileDescriptor"
Descriptor-class Class "Descriptor"
EnumDescriptor-class Class "EnumDescriptor"
SetCloseOnDelete-methods set the close on delete behavior
FileInputStream-class Class "FileInputStream"
Skip-methods Skips a number of bytes
EnumValueDescriptor-class Class "EnumValueDescriptor"
ZeroCopyInputStream-class Virtual Class "ZeroCopyInputStream"
bytesize-methods The number of bytes taken by a message
read-methods Read a protocol buffer message from a connection
fetch-methods Fetch content of a repeated field
RProtoBuf-package R Interface to the Protocol Buffers API
FileInputStream-methods Creates an FileInputStream
clear-methods Clear a field or all fields of the message and set them to their default values
field-methods Extract a field descriptor
RpcHTTP-class Class "RpcHTTP"
FieldDescriptor-class Class "FieldDescriptor"
descriptor-methods Get the descriptor of a message
containing_type-methods Gets the message type descriptor that contains a descriptor
is_extension-methods Indicates if a field descriptor is an extension
with.Message with and within methods for protocol buffer messages
ZeroCopyOutputStream-class Virtual Class "ZeroCopyOutputStream"
add-methods add elements of a repeated field of a message
isInitialized-methods Indicates if a protocol buffer message is initialized
readASCII-methods read a message in ASCII format
clone-methods Clone protocol buffer messages
merge-methods Merge two messages of the same type
label-methods Gets the label of a field
completion Completion support for protocol buffer messages and descriptors
field_count-methods The number of fields
has-methods Indicates if an object has the given field set
type-methods Gets the type or the C++ type of a field
FileOutputStream-class Class "FileOutputStream"
Next-methods Obtains a chunk of data from the stream
P Protocol Buffer descriptor importer
asMessage coerce an object to a protobuf message
set-methods set a subset of values of a repeated field of a message
number-methods Gets the declared tag number of a field
fileDescriptor-methods gets the file descriptor of an object
name Name or full name of a descriptor
nested_type_count-methods The number of fields
size-methods Size of a message field
as.list.Message Grab the protocol buffer message as an R list
invoke-methods invoke a protobuf rpc method
nested_type-methods Extract a message type descriptor for a nested type
serialize_pb Serialize R object to Protocol Buffer Message.
sizegets Set the size of a field
swap-methods swap elements of a repeated field of a message
enum_type-methods Extract an enum type descriptor for a nested type
enum_type_count-methods The number of enum types
readProtoFiles protocol buffer descriptor importer
ConnectionInputStream-methods Creates an ConnectionInputStream
ArrayOutputStream-class Class "ArrayOutputStream"
ArrayInputStream-class Class "ArrayInputStream"
ArrayInputStream-methods Creates an ArrayInputStream
ArrayOutputStream-methods Creates an ArrayOutputStream
ConnectionInputStream-class Class "ConnectionInputStream"
ConnectionOutputStream-methods Creates an ConnectionOutputStream
BackUp-methods Backs up a number of bytes from a stream
ConnectionOutputStream-class Class "ConnectionOutputStream"
No Results!

Vignettes of RProtoBuf

No Results!

Last month downloads


Date 2020-02-08
LinkingTo Rcpp
SystemRequirements ProtoBuf libraries and compiler version 2.2.0 or later; version 3.0.0 or later is supported as well. On Debian/Ubuntu these can be installed as libprotoc-dev, libprotobuf-dev and protobuf-compiler, while on Fedora/CentOS protobuf-devel and protobuf-compiler are needed.
BugReports https://github.com/eddelbuettel/rprotobuf/issues
URL https://github.com/eddelbuettel/rprotobuf
License GPL (>= 2)
NeedsCompilation yes
Packaged 2020-02-08 12:59:21.404546 UTC; edd
Repository CRAN
Date/Publication 2020-02-08 14:10:02 UTC

Include our badge in your README