Porque não é necessário usar c() quando usamos :?

Recebemos o seguinte exercício em aula no Curso R:

# a. Guarde em um objeto uma sequência de números que comece
# em 0 e termine em 5.

As respostas possíveis apontadas pela professora foram:
vetor ← 0:5
vetor ← c(0, 1, 2, 3, 4, 5)

Minha pergunta é: porque a função c é desnecessária na primeira resposta (bastando apontar a sequência de números com :)?

Obrigada.

Natalia

Bom dia Natalia! Tudo bem?

A função c() serve para combinar elementos/valores e resultar em um vetor.

Os dois pontos : no R é um operador. Esse operador tem como objetivo criar sequências. Internamente, nesse operador, o que acontece é gerar a sequência e combinar os elementos. Por isso o resultado é um vetor com os números da sequência criada. Por exemplo:

1:10
#>  [1]  1  2  3  4  5  6  7  8  9 10


10:1
#>  [1] 10  9  8  7  6  5  4  3  2  1


-10:10
#>  [1] -10  -9  -8  -7  -6  -5  -4  -3  -2  -1   0   1   2   3   4   5   6   7   8
#> [20]   9  10

Created on 2022-02-15 by the reprex package (v2.0.1)

Usar a função c() nesse caso também funciona, porém não é necessário (pois isso já é feito internamente quando usamos o :):

c(1:10)
#>  [1]  1  2  3  4  5  6  7  8  9 10


c(10:1)
#>  [1] 10  9  8  7  6  5  4  3  2  1


c(-10:10)
#>  [1] -10  -9  -8  -7  -6  -5  -4  -3  -2  -1   0   1   2   3   4   5   6   7   8
#> [20]   9  10

Created on 2022-02-15 by the reprex package (v2.0.1)

Mas caso a gente queira combinar duas sequências, por exemplo, o c() seria necessário:


1:10, 20:30 # não funciona
#> Error: unexpected ',' in "1:10,"

c(1:10, 20:30) # funciona
#>  [1]  1  2  3  4  5  6  7  8  9 10 20 21 22 23 24 25 26 27 28 29 30

Created on 2022-02-15 by the reprex package (v2.0.1)

Ficou claro?

Abraços!

3 curtidas