Comece agoraComece grátis

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

Ver curso

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 valores 3, 7 e 31, nessa ordem. Os nomes devem ser "first", "second" e "third".
    • Crie uma lista nomeada, both, contendo polygons e mersenne_primes, nessa ordem. Os nomes também devem ser polygons e mersenne_primes.

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()
*/
Editar e Executar Código