28. fb1 <- function(n) {
fb <- character(n)
for (i in 1:n) {
if (i %% 3 == 0 && i %% 5 == 0)
fb[i] <- "FizzBuzz"
else if (i %% 3 == 0)
fb[i] <- "Fizz"
else if (i %% 5 == 0)
fb[i] <- "Buzz"
else
fb[i] <- i
}
fb
}
29.
30. fb2 <- function(n) {
sapply(1:n, function(i) {
if (i %% 3 == 0 && i %% 5 == 0)
"FizzBuzz"
else if (i %% 3 == 0)
"Fizz"
else if (i %% 5 == 0)
"Buzz"
else
i
})
}
47. library(compiler) # Installed by default
library(inline) # Needs manual installation
fbcpp <- cxxfunction(
signature(ns="integer"),
body=src, # Shown in the next slide
plugin="Rcpp")
fb1.c <- cmpfun(fb1)
fb2.c <- cmpfun(fb2)
fb3.c <- cmpfun(fb3)
fbcpp.c <- cmpfun(fbcpp)
48. int n = Rcpp::as<int>(ns);
Rcpp::CharacterVector fb(n);
for (int index = 0; index < n; index++) {
int i = index + 1;
if (i % 3 == 0 && i % 5 == 0)
fb[index] = "FizzBuzz";
else if (i % 3 == 0)
fb[index] = "Fizz";
else if (i % 5 == 0)
fb[index] = "Buzz";
else {
char s[11]; // Integer is 10 or less digit
sprintf(s, "%d", i);
fb[index] = s;
}
}
return(fb);