Quero criar um vetor a partir de uma linha de um quadro de dados. Mas não quero ter que nomes de linhas e colunas. Tentei várias coisas ... mas não tive sorte.
Este é o meu quadro de dados:
> df <- data.frame(a=c(1,2,4,2),b=c(2,6,2,1),c=c(2.6,8.2,7.5,3))
> df
a b c
1 1 2 2.6
2 2 6 8.2
3 4 2 7.5
4 2 1 3.0
Eu tentei:
> newV <- as.vector(df[1,])
> newV
a b c
1 1 2 2.6
Mas eu realmente quero algo assim:
> newV <- c( 1,2,2.6)
> newV
[1] 1.0 2.0 2.6
c(t(as.matrix(df)))
:?Respostas:
Ao extrair uma única linha de um quadro de dados, você obtém um quadro de dados de uma linha. Converta em um vetor numérico:
Como @Roland sugere,
unlist(df[1,])
converterá o quadro de dados de uma linha em um vetor numérico sem descartar os nomes. Portanto,unname(unlist(df[1,]))
é outra maneira um pouco mais explícita de obter o mesmo resultado.Como @Josh comenta abaixo, se você tiver um quadro de dados não completamente numérico (alfabético, fator, misto ...), será necessário
as.character(df[1,])
.fonte
identical(unlist(df[1,], use.names = FALSE), as.numeric(df[1,]))
(e btw df ainda não é um nome adequado para data.frame ... ;-))Eu recomendo
unlist
, que guarda os nomes.Se você não quiser um vetor nomeado:
fonte
Se você não quiser mudar para numérico, pode tentar isso.
fonte
str(as.vector(t(df)[,1]))
énum [1:3] 1 2 2.6
, ou seja, seu código não converter os resultados de um vetor numérico ...t(df)
R, força o quadro de dados a uma matriz, neste caso uma matriz numérica porque todos os elementos são numéricos. Em seguida,[,1]
extrai a primeira coluna (um vetor numérico, porque a dimensão redundante é descartada automaticamente).as.vector()
apenas elimina os nomes (o que você também pode fazerunname()
).unname(unlist(x))
solução é um pouco melhor (mais eficiente e mais transparente).as.vector(t(df)[,1])
Eu amo isso ! Exatamente o que eu preciso!Aqui está uma
dplyr
opção baseada:fonte
Observe que você deve ter cuidado se sua linha contiver um fator. Aqui está um exemplo:
Aqui está outro exemplo (por padrão, data.frame () converte caracteres em fatores)
Para evitar esse comportamento, você precisa cuidar do fator, antes de extraí-lo:
fonte
Colunas de quadros de dados já são vetores, você só precisa retirá-los. Observe que você coloca a coluna desejada após a vírgula, não antes dela:
Se você realmente quer uma briga, faça o que Ben disse e use as palavras corretamente no futuro.
fonte