为了账号安全,请及时绑定邮箱和手机立即绑定

从R中的data.frame中删除整列

从R中的data.frame中删除整列

翻翻过去那场雪 2019-10-14 11:11:19
有谁知道如何从R中的data.frame中删除整个列?例如,如果我得到此data.frame:> head(data)   chr       genome region1 chr1 hg19_refGene    CDS2 chr1 hg19_refGene   exon3 chr1 hg19_refGene    CDS4 chr1 hg19_refGene   exon5 chr1 hg19_refGene    CDS6 chr1 hg19_refGene   exon我想删除第二列。
查看完整描述

3 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

您可以将其设置为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!

但是,请谨慎使用矩阵子集,因为您可能会得到一个向量:


Data <- Data[,-(2:3)]             # vector

Data <- Data[,-(2:3),drop=FALSE]  # still a data.frame


查看完整回答
反对 回复 2019-10-14
?
慕后森

TA贡献1802条经验 获得超5个赞

使用data.frames 时,发布的答案非常好。但是,从内存角度来看,这些任务的效率可能非常低。对于大数据,删除列可能会花费异常长的时间和/或由于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

我应该举一个更大的例子来说明差异。我将在某个时候更新此答案。


查看完整回答
反对 回复 2019-10-14
  • 3 回答
  • 0 关注
  • 3934 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信