回答:
に設定できNULL
ます。
> Data$genome <- NULL
> head(Data)
chr region
1 chr1 CDS
2 chr1 exon
3 chr1 CDS
4 chr1 exon
5 chr1 CDS
6 chr1 exon
コメントで指摘されているように、他にもいくつかの可能性があります。
Data[2] <- NULL # Wojciech Sobala
Data[[2]] <- NULL # same as above
Data <- Data[,-2] # Ian Fellows
Data <- Data[-2] # same as above
次の方法で複数の列を削除できます。
Data[1:2] <- list(NULL) # Marek
Data[1:2] <- NULL # does not work!
ただし、最終的にベクトルになる可能性があるため、matrix-subsettingには注意してください。
Data <- Data[,-(2:3)] # vector
Data <- Data[,-(2:3),drop=FALSE] # still a data.frame
Data[-2]
はdrop
引数を必要としないため、常にdata.frame
から戻りdata.frame
ます。そして、これはローカライズされた列(および列のみ)をdata.frame
(より高速に)ローカライズするためのはるかに優れた方法だと思います。チェック:cars[-1]
(1列data.frame
)以上cars[-(1:2)]
:data frame with 0 columns and 50 rows
。
Data[c(1,2)]<-list(NULL)
必要がある場合。
1つ以上の列を名前で削除するには、列名がわかっている場合(実行時に決定されるのではなく)、subset()
構文が好きです。たとえば、データフレーム
df <- data.frame(a=1:3, d=2:4, c=3:5, b=4:6)
a
あなたができる列だけを削除するには
Data <- subset( Data, select = -a )
そして、あなたができるb
とd
列を削除するには
Data <- subset( Data, select = -c(d, b ) )
あなたは間のすべての列を削除することができますd
し、b
で。
Data <- subset( Data, select = -c( d : b )
上で述べたように、この構文は列名がわかっている場合にのみ機能します。列名がプログラムで決定されている(つまり、変数に割り当てられている)場合は機能しません。?subset
ドキュメントからこの警告を再現します:
警告:
これは、インタラクティブに使用するための便利な関数です。プログラミングには、 '['のような標準のサブセット化関数を使用することをお勧めします。特に、引数 'subset'の非標準の評価は、予期しない結果をもたらす可能性があります。
data.frame
sを使用する場合、投稿された回答は非常に優れています。ただし、これらのタスクは、メモリの観点からはかなり非効率的です。大きなデータでは、列の削除に非常に長い時間がかかるか、out of memory
エラーが原因で失敗する可能性があります。パッケージdata.table
は、:=
オペレーターがこの問題に対処するのに役立ちます。
library(data.table)
> dt <- data.table(a = 1, b = 1, c = 1)
> dt[,a:=NULL]
b c
[1,] 1 1
違いを示すために、もっと大きな例をまとめる必要があります。この回答は、随時更新します。
1つ以上の列dplyr::select()
といくつかのヘルパー関数を削除するためのいくつかのオプションがあります。ヘルパー関数は、ドロップする特定の列すべてに名前を付ける必要がないものがあるため、役立ちます。select()
を使用して列をドロップするには、先頭に-
するには、列名を否定するためにを。
dplyr::starwars
さまざまな列名のサンプルデータを使用する:
library(dplyr)
starwars %>%
select(-height) %>% # a specific column name
select(-one_of('mass', 'films')) %>% # any columns named in one_of()
select(-(name:hair_color)) %>% # the range of columns from 'name' to 'hair_color'
select(-contains('color')) %>% # any column name that contains 'color'
select(-starts_with('bi')) %>% # any column name that starts with 'bi'
select(-ends_with('er')) %>% # any column name that ends with 'er'
select(-matches('^v.+s$')) %>% # any column name matching the regex pattern
select_if(~!is.list(.)) %>% # not by column name but by data type
head(2)
# A tibble: 2 x 2
homeworld species
<chr> <chr>
1 Tatooine Human
2 Tatooine Droid
列番号でドロップすることもできます。
starwars %>%
select(-2, -(4:10)) # column 2 and columns 4 through 10