如何使用列名对数据框列进行子集化?

Nik*_*hal 4 r dataframe

我创建了一个名为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);
Run Code Online (Sandbox Code Playgroud)

我想从数据框 z 中删除列 c 和 d

我试过这个代码

p = subset(z , colnames(z) == c('a' , 'b'))
Run Code Online (Sandbox Code Playgroud)

但我得到了这个结果

a   b   c   d
1   2   3   4   
1   2   3   4 
Run Code Online (Sandbox Code Playgroud)

我应该在此命令中进行哪些更改以从z 中删除cd列。

www*_*www 9

我们可以使用以下内容来指定按名称选择哪些列。

z[, c("a", "b")]
Run Code Online (Sandbox Code Playgroud)

这也有效。

z[c("a", "b")]
Run Code Online (Sandbox Code Playgroud)

或者我们可以使用以下命令首先指定要删除向量中的哪些列,然后选择不在该向量中的列。

cols_remove <- c("c", "d")
z[, !(colnames(z) %in% cols_remove)]
Run Code Online (Sandbox Code Playgroud)