Criar vetor com valores fornecidos
Em vez de definir um vetor e depois preencher seus elementos, é possível criar um vetor e especificar seus valores em uma única linha de código usando ::create(). Essa é uma função membro estática, ou seja, é um método do próprio tipo de vetor, não de uma variável do tipo vetor. Você pode especificar até 20 elementos com create. (Para vetores maiores, você precisa usar várias linhas de código.)
O código a seguir cria um vetor numérico, important_numbers, contendo pi, e e infinito.
NumericVector numbers = NumericVector::create(PI, exp(1), INFINITY);
::create também pode ser usado para criar vetores nomeados. A sintaxe para nomear elementos é _["name"] = value. Aqui está o mesmo código novamente, agora nomeando os elementos.
NumericVector numbers = NumericVector::create(_["pi"] = PI, _["e"] = exp(1), _["inf"] = INFINITY);
Assim como em R, se você quiser combinar variáveis de tipos diferentes em outra variável, use uma lista. Na versão com Rcpp, o tipo é capitalizado; é uma List.
Este exercicio faz parte do curso
Otimizando código R com Rcpp
Instruções do exercicio
- Complete a definição de uma função,
create_vectors(), que cria alguns vetores.- Crie um vetor de caracteres sem nomes,
polygons, contendo os valores"triangle","square"e"pentagon", nessa ordem. - Crie um vetor inteiro nomeado,
mersenne_primes, contendo os valores3,7e31, nessa ordem. Os nomes devem ser"first","second"e"third". - Crie uma lista nomeada,
both, contendopolygonsemersenne_primes, nessa ordem. Os nomes também devem serpolygonsemersenne_primes.
- Crie um vetor de caracteres sem nomes,
exercicio interativo prático
Tente este exercicio completando este código de exemplo.
#include
using namespace Rcpp;
// [[Rcpp::export]]
List create_vectors() {
// Create an unnamed character vector
CharacterVector polygons = CharacterVector::___("___", "___", "___");
// Create a named integer vector
IntegerVector mersenne_primes = ___(_["___"] = ___, ___, ___);
// Create a named list
List both = ___(___, ___);
return both;
}
/*** R
create_vectors()
*/