RProtoBuf v0.4.13


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

Vignettes of RProtoBuf

No Results!

Last month downloads


Date 2018-11-03
LinkingTo Rcpp
VignetteBuilder knitr
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 2018-11-03 14:08:29.354651 UTC; edd
Repository CRAN
Date/Publication 2018-11-03 16:00:10 UTC

Include our badge in your README