• Stars
    star
    341
  • Rank 123,998 (Top 3 %)
  • Language
  • Created about 9 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Documentation for R's internal C API

R internals

This repo aims to provide some useful additional information about R's internal C API, or Rapi for short. This site draws heavily from Section 5 ("System and foreign language interfaces") of Writing R extensions, R internals, and inspection of R's source code to see how functions are used.

Here we focus on best practices and modern tools. To wit, we recommend that you use R_NO_REMAP so all API functions have the prefix R_ or Rf_:

#define R_NO_REMAP
#include <R.h>
#include <Rinternals.h>

(Including <Rinternals.h> seems like bad form. However, it doesn't actually give you access to the "internal" internal API unless you set some additional flags. Instead it lets you access the "public" internal API, which is both necessary and safe. Yes, this is confusing.)

SEXPs

At the C-level, all R objects are stored in a common datatype, the SEXP, or S-expression. A SEXP is a variant type, with subtypes or SEXPTYPEs for all R's data structures. This site roughly breaks Rapi into chapters based on the SEXPTYPE the functions work with:

  • Vectors cover the most important data structures: vectors. This includes LGLSXP, INTSXP, REALSXP, CPLXSXP, STRSXP, VECSXP, RAWSXP, and EXPRSXP.

  • Strings: Character vectors are a more complex object made of vector CHARSXPs.

  • Environments, or ENVSXPs.

  • Functions, including CLOSXPs and the rarer BUILTINSXPs, SPECIALSXPs and FUNSXPs.

  • Symbols, SYMSXPs.

  • Pairlists, including LISTSXPs and the related NILSXP, LANGSXP, and DOTSXP. This chapter also includes a discussion of attributes, which are powered by pair lists.

  • External pointers, or XPTRSXPs.

Other categories are:

More Repositories

1

r4ds

R for data science: a book
R
4,500
star
2

adv-r

Advanced R: a book
TeX
2,248
star
3

stats337

Readings in applied data science
R
1,626
star
4

ggplot2-book

ggplot2: elegant graphics for data analysis
Perl
1,543
star
5

mastering-shiny

Mastering Shiny: a book
R
1,335
star
6

r-pkgs

Building R packages
R
765
star
7

plyr

A R package for splitting, applying and combining large problems into simpler problems
R
493
star
8

tidy-data

A paper on data tidying
TeX
404
star
9

emo

Easily insert emoji into R and RMarkdown
R
396
star
10

bigvis

Exploratory data analysis for large datasets (10-100 million observations)
C++
286
star
11

strict

Make R a little bit stricter
R
219
star
12

data-baby-names

Distribution of US baby names, 1880-2008
R
207
star
13

reshape

An R package to flexible rearrange, reshape and aggregate data
R
206
star
14

data-movies

Download data from IMDB movies and parse into useful form
Ruby
203
star
15

pryr

Pry open the covers of R
R
201
star
16

assertthat

User friendly assertions for R
R
200
star
17

r2d3

ggplot2 + d3 = r2d3
JavaScript
183
star
18

babynames

An R package containing US baby names from the SSA
R
131
star
19

lazyeval

Lazy evaluation: an alternative to non-standard evaluation (NSE) for R
R
131
star
20

secure

Secure private R data in public packages
R
105
star
21

purrrlyr

Tools at the intersection of purrr and dplyr
C++
103
star
22

lineprof

Visualise line profiling results in R
JavaScript
102
star
23

requirements

Find packages required for code to run
R
75
star
24

elmer

Call LLM APIs from R
R
71
star
25

ggstat

Statistical computations for visualisation
C++
70
star
26

r-python

Exploring data related to relative usage of R vs. python
R
68
star
27

gg2v

Render ggplot2 graphics using vega
JavaScript
67
star
28

building-permits

Code & data accompanying "whole-game" youtube video
66
star
29

stringb

A dependency-free version of stringr
R
65
star
30

precis

Succintly Summarise Data Frames
R
63
star
31

r-on-github

An exploration of R code and package on github, using the github search and repo apis
R
54
star
32

data-housing-crisis

Clean data related to the housing crisis
R
53
star
33

tidy-tools

Building tidy tools in R, a workshop
R
49
star
34

decumar

An alternative to sweave
R
49
star
35

neiss

Data from National Electronic Injury Surveillance System
HTML
48
star
36

monads

Work with Monads in R
R
47
star
37

joy-of-fp

Supplemental materials for "The joy of functional programming"
R
45
star
38

crantastic

Source code for crantastic.org: a community site for R
Ruby
44
star
39

recipes

Wickham family recipes
R
43
star
40

oldbookdown

R
39
star
41

cubelyr

A data cube dplyr backend
R
36
star
42

data-fuel-economy

Fuel economy data, 1978-2008
35
star
43

table-shapes

34
star
44

lvplot

Letter value boxplots for R
R
34
star
45

usdanutrients

USDA nutrient database as an R data package
R
34
star
46

reactive-docs

An introduction to reactive documents in R (for teaching stats)
34
star
47

vis-eda

Visualisation for EDA
R
32
star
48

rsmith

A static site generator for R inspired by metalsmith.io
R
32
star
49

sfhousing

Code to download and process SF housing sales data
R
32
star
50

helpr

An alternative html help system for R
R
31
star
51

profr

An alternative profiling package for R
R
30
star
52

cocktails

Hadley's cocktail book
R
29
star
53

productplots

Product graphics for categorical data
R
29
star
54

shinySignals

R
29
star
55

data-counties

County boundaries in csv for all US counties
R
28
star
56

l1tf

L1 trend filtering
C
27
star
57

ggplot1

Before there was ggplot2
R
26
star
58

roxygen3

R
23
star
59

15-state-of-the-union

R
22
star
60

minby

Compute minimum of one variable grouped by another
R
21
star
61

mylittlepony

A package for learning about the basics of package development
R
19
star
62

tidyverse-booster

R
19
star
63

hadley.github.com

Personal blog
JavaScript
18
star
64

boxplots-paper

TeX
18
star
65

mturkr

Tools to make MTurk tasks easy to run from R
R
18
star
66

monthApp

An example of a Shiny app-package
R
18
star
67

docker

My personal dockerfiles
17
star
68

fueleconomy

EPA fuel economy data in an R package
R
16
star
69

meifly

An R package for exploring ensembles of (generalised) linear models
R
16
star
70

clusterfly

An R package for visualising high-dimensional clustering algorithms
R
16
star
71

rminds

Sample R code for visualising models (especially models in data space)
16
star
72

sinartra

R
15
star
73

beautiful-data

Book chapter for beautiful data
15
star
74

eggnogr

Shiny app for scaling eggnog
R
14
star
75

15-student-papers

Graphics & computing student paper winners @ JSM 2015
R
14
star
76

fec-dplyr

Exploration of FEC contributions data with dplyr
R
13
star
77

mexico-mortality

Mortality data for Mexico, along with useful extra data
R
13
star
78

grouperise

Explore the idea of "grouperised" functions
C
13
star
79

mutatr

Prototype-based mutable objects for R, based on io and javascript
R
12
star
80

lvplot-paper

TeX
12
star
81

yrbss

Youth Risk Behaviour Surveillance System Data
R
12
star
82

tanglekit

R bindings for Brett Victor's tangle.js
JavaScript
11
star
83

nasaweather

Data from the 2006 ASA data expo
R
11
star
84

ggplot2-bayarea

Data, code and slides for ggplot2 talk given to Bay Area useR group, 17 Sep 2009
R
11
star
85

htmlbook

Convert a Quarto book to O'Reilly's html book format
HTML
11
star
86

vita

HTML
10
star
87

classifly

An R package to visualise high-dimensional classification boundaries with GGobi
R
10
star
88

ideas

Research ideas
10
star
89

proto

Prototype Object-Based Programming
R
10
star
90

cran-logs-dplyr

An case study using dplyr on a large dataset: all package downloads from the Rstudio cran mirror.
R
9
star
91

scagnostics

An R package to calculate graph theoretic scagnostics
C++
9
star
92

ggplot2movies

What the package does (one paragraph).
R
9
star
93

tidycore

Core tidyverse packages
R
9
star
94

densityvis

R package for cutting and binning data
R
9
star
95

fortify

Convert any R object to a data frame, suitable for visualisation
R
9
star
96

hadladdin

RStudio add-ins by Hadley
R
9
star
97

hadcol

Hadley's utilities for adding columns
R
9
star
98

talk-httr2

R
9
star
99

localmds

Local multidimensional scaling, an R package
8
star
100

layers

Layers code extracted out of ggplot2
R
8
star