有人知道如何在R中从data.frame中删除整个列吗?例如,如果给我这个data.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
我想去掉第二列
9条答案
按热度按时间eh57zj3b1#
可以设置为
NULL
。正如评论中所指出的,还有一些其他的可能性:
您可以通过以下方式删除多个列:
但是要小心矩阵子集,因为你可能会得到一个向量:
fquxozlt2#
要按名称删除一个或多个列,当列名已知时(而不是在运行时确定),我喜欢
subset()
语法。例如,对于 Dataframe只删除
a
列,要删除
b
和d
列,可以执行以下操作:您可以使用以下命令删除
d
和b
之间的所有列:正如我上面所说的,这种语法只有在列名已知的情况下才起作用。如果列名是以编程方式确定的(即,赋给一个变量)。我将从
?subset
文档中复制此警告:警告:
这是一个用于交互式使用的便利功能。对于编程来说,最好使用标准的子集函数,比如'subset',特别是参数'subset'的非标准评估可能会产生意想不到的后果。
vyswwuz23#
(For完整性)如果你想按名称删除列,你可以这样做:
包含
drop = F
可以确保结果仍然是data.frame
,即使只剩下一列。tzxcd3kk4#
在使用
data.frame
s时,张贴的答案非常好。然而,从记忆的Angular 来看,这些任务可能非常低效。对于大型数据,删除列可能需要非常长的时间和/或由于out of memory
错误而失败。软件包data.table
可以帮助解决:=
操作符的问题:我应该举一个更大的例子来说明它们的区别。我会在某个时候更新这个答案。
ve7v8dk25#
这样,您就可以删除
column
并将variable
存储到另一个variable
中。ikfrs5lh6#
使用
dplyr::select()
和一些helper函数删除一个或多个列有几个选项。helper函数可能很有用,因为有些函数不需要命名要删除的所有特定列。请注意,要删除使用select()
的列,您需要使用前导-
来否定列名。使用
dplyr::starwars
示例数据处理一些列名称:您也可以按列号下拉:
bz4sfanl7#
使用dashboard R,以下工作:
data <- select(data, -genome)
根据此处的文档https://www.marsja.se/how-to-remove-a-column-in-r-using-dplyr-by-name-and-index/#:starwars%2C%20%2Dheight)
brccelvz8#
我只是想加一个还没提到的。这很简单,但也很有趣,因为在我所有的互联网细读我没有看到它,即使高度相关的%在%出现在许多地方。
另外,我没有看到任何人发布grep替代品。这些可以非常方便地删除多个与模式匹配的列。
oo7oh9g99#
chr = chr[,-2]
如果你这样做会更简单,只需要从df中删除第二列,然后再次将其存储在df中。