Skip to content

Instantly share code, notes, and snippets.

@jjallaire
jjallaire / RcppAttributes.cpp
Created October 19, 2012 19:27
Rcpp example functions using attributes
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
int fibonacciCpp(const int x) {
if (x == 0) return(0);
if (x == 1) return(1);
@jjallaire
jjallaire / ArmadilloTest.cpp
Created October 24, 2012 11:59
RcppArmadillo example
// [[Rcpp::linking_to(RcppArmadillo)]]
#include <RcppArmadillo.h>
using namespace Rcpp;
// [[Rcpp::export]]
List fastLmCpp(NumericVector yr, NumericMatrix Xr) {
int n = Xr.nrow(), k = Xr.ncol();
@jjallaire
jjallaire / gist:3993978
Created November 1, 2012 14:33
Rcpp engine for knitr
```{r engine='Rcpp'}
int fibonacci(const int x) {
if (x == 0) return(0);
if (x == 1) return(1);
return (fibonacci(x - 1)) + fibonacci(x - 2);
}
```
```{r engine='Rcpp', Rcpp.plugin='RcppArmadillo'}
List fastLm(NumericVector yr, NumericMatrix Xr) {
@jjallaire
jjallaire / gist:4008371
Created November 3, 2012 19:22
Setup build environment
# Setup the build environment based on the specified dependencies. Returns an
# opaque object that can be passed to .restoreEnvironment to reverse whatever
# changes that were made
.setupBuildEnvironment <- function(depends) {
# discover dependencies
buildEnv <- list()
linkingToPackages <- c("Rcpp")
for (package in depends) {
@jjallaire
jjallaire / gist:4040462
Created November 8, 2012 18:02
RcppArmadillo example
// [[Rcpp::depends(RcppArmadillo)]]
#include <Rcpp.h>
#include <RcppArmadillo.h>
using namespace Rcpp;
@jjallaire
jjallaire / table.cpp
Created November 11, 2012 16:15 — forked from hadley/table.cpp
IntegerVector table1(const CharacterVector x) {
std::map<char*, int> counts;
int n = x.length();
for (int i = 0; i < n; i++) {
counts[x[i]]++;
}
// Loop through each element of map and output into named vector
IntegerVector out(counts.size());
@jjallaire
jjallaire / gist:4055396
Created November 11, 2012 16:18
table1
library(Rcpp)
library(microbenchmark)
cppFunction('
IntegerVector table1(const CharacterVector x) {
std::map<std::string, int> counts;
std::vector<std::string> vec = as<std::vector<std::string> >(x);
int n = x.length();
for (int i = 0; i < n; i++) {
@jjallaire
jjallaire / gist:4235475
Created December 7, 2012 18:50
package updates required
loadedPackageUpdateRequired <- function(pkgs) {
if (any(pkgs %in% loadedNamespaces())) {
return(TRUE)
}
else {
# compute dependent packages
avail <- available.packages()
if (getRversion() >= "2.15")
deps <- tools:::package_dependencies(pkgs, db = avail, recursive = TRUE)
@jjallaire
jjallaire / gist:4240240
Created December 8, 2012 13:14
loaded package requires update
loadedPackageRequiresUpdate <- function(pkgs) {
if (any(pkgs %in% loadedNamespaces())) {
return(TRUE)
}
else {
# compute dependent packages
avail <- available.packages()
if (getRversion() >= "2.15")
deps <- tools:::package_dependencies(pkgs, db = avail, recursive = TRUE)
else
@jjallaire
jjallaire / binner.cpp
Last active September 13, 2019 13:46 — forked from hadley/binner.cpp
#include <Rcpp.h>
using namespace Rcpp;
class BinFixed {
double width_;
double origin_;
public: