Adakah yang tahu cara menghapus seluruh kolom dari data.frame di R? Misalnya jika saya diberi data ini.frame:
> head(data)
chr genome region
1 chr1 hg19_refGene CDS
2 chr1 hg19_refGene exon
3 chr1 hg19_refGene CDS
4 chr1 hg19_refGene exon
5 chr1 hg19_refGene CDS
6 chr1 hg19_refGene exon
dan saya ingin menghapus kolom ke-2.
Jawaban:
Anda dapat mengaturnya
NULL
.Seperti yang ditunjukkan dalam komentar, berikut adalah beberapa kemungkinan lain:
Anda dapat menghapus banyak kolom melalui:
Berhati-hatilah dengan subset matriks, karena Anda bisa berakhir dengan vektor:
sumber
Data[-2]
tidak perludrop
argumen karena itu selalu kembalidata.frame
daridata.frame
. Dan saya pikir ini adalah cara yang jauh lebih baik untuk melokalkan kolom (dan hanya kolom) didata.frame
(dan lebih cepat). Periksa:cars[-1]
(satu coldata.frame
) atau lebih baikcars[-(1:2)]
:data frame with 0 columns and 50 rows
.Data[c(1,2)]<-list(NULL)
diperlukan.Untuk menghapus satu atau lebih kolom dengan nama, ketika nama kolom diketahui (sebagai lawan ditentukan saat run-time), saya suka
subset()
sintaksnya. Misalnya untuk frame datauntuk menghapus hanya
a
kolom yang bisa Anda lakukandan untuk menghapus
b
dand
kolom yang bisa Anda lakukanAnda dapat menghapus semua kolom antara
d
danb
dengan:Seperti yang saya katakan di atas, sintaks ini hanya berfungsi ketika nama kolom diketahui. Ini tidak akan berfungsi ketika katakanlah nama kolom ditentukan secara terprogram (yaitu ditugaskan ke variabel). Saya akan mereproduksi Peringatan ini dari
?subset
dokumentasi:sumber
(Untuk kelengkapan) Jika Anda ingin menghapus kolom dengan nama, Anda dapat melakukan ini:
Termasuk
drop = F
memastikan bahwa hasilnya akan tetap menjadidata.frame
bahkan jika hanya satu kolom tersisa.sumber
Jawaban yang diposting sangat baik ketika bekerja dengan
data.frame
s. Namun, tugas-tugas ini bisa sangat tidak efisien dari perspektif memori. Dengan data besar, menghapus kolom bisa memakan waktu lama dan / atau gagal karenaout of memory
kesalahan. Paketdata.table
membantu mengatasi masalah ini dengan:=
operator:Saya harus memberikan contoh yang lebih besar untuk menunjukkan perbedaan. Saya akan memperbarui jawaban ini di beberapa titik dengan itu.
sumber
data.table::set
Fungsi dapat digunakan padadata.frame
s untuk menghapus atau mengubah kolom langsung, tanpa membuat salinan. Lihat di siniAda beberapa opsi untuk menghapus satu atau lebih kolom dengan
dplyr::select()
dan beberapa fungsi pembantu. Fungsi helper dapat bermanfaat karena beberapa tidak mengharuskan penamaan semua kolom tertentu untuk dihapus. Perhatikan bahwa untuk menjatuhkan kolom menggunakanselect()
Anda harus menggunakan terkemuka-
untuk meniadakan nama kolom.Menggunakan
dplyr::starwars
data sampel untuk beberapa variasi dalam nama kolom:Anda juga dapat memberikan nomor kolom:
sumber
Dengan ini, Anda dapat menghapus
column
dan menyimpanvariable
ke yang lainvariable
.sumber