A documentação do R mostra o seguinte, para a função:
------------------------------------------------------
Description
Concatenate vectors after converting to character.Usage
paste(..., sep = " ", collapse = NULL)
Arguments
... | one or more R objects, to be converted to character vectors. |
sep | a character string to separate the terms. Not NA_character_ . |
collapse | an optional character string to separate the results. Not NA_character_ . |
------------------------------------------------------
Mesmo com a descrição, talvez ainda cause confusão a diferença exata entre os argumentos sep e collapse.
No exemplo da documentação, é mostrado o comando
paste("A", 1:6, sep = "")
que gera o seguinte resultado:
[1] "A1" "A2" "A3" "A4" "A5" "A6"
De forma parecida, o comando
paste("A", 1:6, sep = "_")
gera o resultado:
[1] "A_1" "A_2" "A_3" "A_4" "A_5" "A_6"
O problema é que eu gostaria de unir todos os elementos de um vetor em uma string só, como o comando join faz no Python.
Exemplo (em Python):
>>> x = ['1', '2', '3', '4', '5', '6']
>>> print 'bla'.join(x)
1bla2bla3bla4bla5bla6
Ou seja, o join une os termos de x separando-os pela string passada (no caso, 'bla').
Para fazer de maneira semelhante, com o paste, você deve usar o argumento collapse, e não o sep.
A principal diferença é que o sep é um separador usado na concatenação de cada termo. Já o collapse serve para unir todos os termos.
Veja a diferença:
> paste("A", 1:6, sep = '*')
[1] "A*1" "A*2" "A*3" "A*4" "A*5" "A*6"
> paste("A", 1:6, collapse = '*')
[1] "A 1*A 2*A 3*A 4*A 5*A 6"
Dessa forma, para fazer o paste ter a mesma função do join, use o collapse, e não o sep.
É isso. Espero que o post ajude!