如何使用列名对数据框列进行子集化? [复制]
Posted
技术标签:
【中文标题】如何使用列名对数据框列进行子集化? [复制]【英文标题】:How to subset a Data frame column wise using column names? [duplicate] 【发布时间】:2018-02-01 10:25:47 【问题描述】:我创建了一个名为 z 的数据框。
a = c(1,1,1);
b = c(2,2,2);
c = c(3,3,3);
d = c(4,4,4);
z = data.frame(a,b,c,d);
我想从数据框 z 中删除列 c 和 d。
我试过这段代码
p = subset(z , colnames(z) == c('a' , 'b'))
但我得到了这个结果
a b c d
1 2 3 4
1 2 3 4
我应该在此命令中进行哪些更改以从 z 中删除列 c 和 d。
【问题讨论】:
z[, c('a', 'b')]
或参数select
:subset(z, select = c('a' , 'b'))
。顺便说一句,为什么说明末尾有分号? R
不是 C 语言,分号分隔指令,所以当你用它结束一个指令行时,你实际上是把它和最后的 NULL 指令分开。
@ycw 已更新 :-)
【参考方案1】:
我们可以使用以下来指定按名称选择哪些列。
z[, c("a", "b")]
这也有效。
z[c("a", "b")]
或者我们可以使用下面的方法首先指定要删除向量中的哪些列,然后选择不在该向量中的列。
cols_remove <- c("c", "d")
z[, !(colnames(z) %in% cols_remove)]
【讨论】:
保持 @Sateesh 您的评论不清楚。它是不可重现的。你想达到什么目标? @Sateesh 这是 R 代码吗? @Sateesh 你还没有回答我的问题。你发表评论的目的是什么?你的代码真的可以在 R 中运行吗? 是的,它有效...以上是关于如何使用列名对数据框列进行子集化? [复制]的主要内容,如果未能解决你的问题,请参考以下文章