Pertanyaan Konversi baris dari frame data ke vektor


Saya ingin membuat vektor dari deretan bingkai data. Tapi saya tidak ingin harus membariskan & nama kolom. Saya mencoba beberapa hal ... tetapi tidak berhasil.

Ini adalah bingkai data saya:

> 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

Saya mencoba:

> newV <- as.vector(df[1,])
> newV
  a b   c
1 1 2 2.6

Tapi saya benar-benar ingin sesuatu terlihat seperti itu:

> newV <- c( 1,2,2.6)
> newV
[1] 1.0 2.0 2.6

Bantuan apa pun, sangat dihargai.


75
2018-01-23 16:39


asal


Jawaban:


Saat Anda mengekstrak satu baris dari bingkai data, Anda mendapatkan bingkai data satu baris. Konversikan ke vektor numerik:

as.numeric(df[1,])

Seperti yang ditunjukkan @Roland, unlist(df[1,]) akan mengkonversi frame data satu-baris ke vektor numerik tanpa menjatuhkan nama. Karena itu unname(unlist(df[1,])) adalah cara lain yang sedikit lebih eksplisit untuk mendapatkan hasil yang sama.


110
2018-01-23 16:42



saya merekomendasi unlist, yang menyimpan nama-nama itu.

unlist(df[1,])
  a   b   c 
1.0 2.0 2.6 

is.vector(unlist(df[1,]))
[1] TRUE

Jika Anda tidak menginginkan vektor bernama:

unname(unlist(df[1,]))
[1] 1.0 2.0 2.6

33
2018-01-23 16:49



Jika Anda tidak ingin mengubah ke angka, Anda dapat mencoba ini.

> as.vector(t(df)[,1])
[1] 1.0 2.0 2.6

5
2018-01-23 16:47



Kolom dari frame data sudah vektor, Anda hanya perlu menariknya keluar. Perhatikan bahwa Anda menempatkan kolom yang Anda inginkan setelah koma, bukan sebelum:

> newV <- df[,1]
> newV
[1] 1 2 4 2

Jika Anda benar-benar menginginkan sebuah baris, lakukan apa yang dikatakan Ben dan tolong gunakan kata-kata dengan benar di masa depan.


-2
2018-01-23 16:42