RProtoBuf v0.4.8


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 paper in the Journal of Statistical Software (2016, v71i02). Either version 2 or 3 of the 'Protocol Buffers' 'API' is supported.


RProtoBuf Build Status License CRAN 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
ArrayInputStream-class Class "ArrayInputStream"
as.list.Message Grab the protocol buffer message as an R list
asMessage coerce an object to a protobuf message
ByteCount-methods The number of bytes read/written since the object was created
completion Completion support for protocol buffer messages and descriptors
ConnectionInputStream-class Class "ConnectionInputStream"
ConnectionOutputStream-class Class "ConnectionOutputStream"
ArrayOutputStream-class Class "ArrayOutputStream"
BackUp-methods Backs up a number of bytes from a stream
clone-methods Clone protocol buffer messages
containing_type-methods Gets the message type descriptor that contains a descriptor
enum_type_count-methods The number of enum types
Descriptor-class Class "Descriptor"
field_count-methods The number of fields
enum_type-methods Extract an enum type descriptor for a nested type
FileDescriptor-class Class "FileDescriptor"
field-methods Extract a field descriptor
FieldDescriptor-class Class "FieldDescriptor"
EnumDescriptor-class Class "EnumDescriptor"
EnumValueDescriptor-class Class "EnumValueDescriptor"
is_extension-methods Indicates if a field descriptor is an extension
label-methods Gets the label of a field
nested_type-methods Extract a message type descriptor for a nested type
nested_type_count-methods The number of fields
type-methods Gets the type or the C++ type of a field
with.Message with and within methods for protocol buffer messages
Message-class Class "Message"
merge-methods Merge two messages of the same type
Next-methods Obtains a chunk of data from the stream
number-methods Gets the declared tag number of a field
serialize_pb Serialize R object to Protocol Buffer Message.
FileInputStream-class Class "FileInputStream"
ServiceDescriptor-class Class "ServiceDescriptor"
FileOutputStream-class Class "FileOutputStream"
RpcHTTP-class Class "RpcHTTP"
RProtoBuf-package R Interface to the Protocol Buffers API
MethodDescriptor-class Class "MethodDescriptor"
ZeroCopyInputStream-class Virtual Class "ZeroCopyInputStream"
ZeroCopyOutputStream-class Virtual Class "ZeroCopyOutputStream"
name Name or full name of a descriptor
P Protocol Buffer descriptor importer
read-methods Read a protocol buffer message from a connection
GetErrno-methods Get the error number for an I/O error
readProtoFiles protocol buffer descriptor importer
readASCII-methods read a message in ASCII format
has-methods Indicates if an object has the given field set
SetCloseOnDelete-methods set the close on delete behavior
Skip-methods Skips a number of bytes
No Results!

Last month downloads


Date 2017-01-17
LinkingTo Rcpp
VignetteBuilder highlight
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 and libprotobuf-dev, 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 2017-01-17 12:30:58.196848 UTC; edd
Repository CRAN
Date/Publication 2017-01-17 19:41:15

Include our badge in your README