Tenho um vetor no qual apenas alguns elementos são nomeados. Como podemos transformá-lo em uma matriz ou em um dataframe que salve esses nomes e deixe os elementos sem nome como estão? Por exemplo, myvec tem 10 elementos e apenas 6 números (os três últimos dos 5 números) têm nomes acima deles.
n1 n2 n3
1.29258297 0.68706142 0.70861652 -1.13494695 -0.26373635 0.29306389 0.65264213
n1 n2 n3
-0.07332781 -0.23717912 0.38339900
Se eu transformar myvec em uma matriz ou dataframe com 2 linhas e 5 colunas, quero que as últimas 3 colunas sejam nomeadas com n1, n2 e n3. Como podemos fazer isso em R?
Eu tentaria desenvolver algo robusto a partir de
Dados
Matriz:
Quadro de dados:
No exemplo acima, poderíamos usar uma função personalizada:
Explicação:
l <- length(x) / 2
calcula o ponto médio do vetor e o atribui al
.x[1:(l <- length(x)/2)]
pega a primeira metade do vetor, usando a atribuição del
dentro da indexaçãox[(l+1):length(x)]
obtém a segunda metade do vetorcol.names = names(x)[(l+1):length(x)]
define os nomes das colunas como os nomes da segunda metade do vetor.tudo embrulhado em
rbind
eas.data.frame
saída:
Você poderia tentar isso
dando
Use um
cumsum
truque para criar uma variávelf
fornecendo os segmentos com/sem nomes, depoissplit
o vetor dessa variável erbind
o resultado.Criado em 2025-04-08 com reprex v2.1.1