从 r 中的数据框中删除每第 n 列

Ros*_*ust 3 r dataframe

我试图通过删除每第三列来减小数据框的大小。

这是我的示例数据框:

example = data.frame(x=c(1,2,3,4), y=c(1,2,3,4), z=c(1,2,3,4), w=c(1,2,3,4), p=c(1,2,3,4), q=c(1,2,3,4), r=c(1,2,3,4))
Run Code Online (Sandbox Code Playgroud)

看起来像这样

x y z w p q r
1 1 1 1 1 1 1
2 2 2 2 2 2 2
3 3 3 3 3 3 3
4 4 4 4 4 4 4
Run Code Online (Sandbox Code Playgroud)

我想把它转换成这样的东西

x y w p r
1 1 1 1 1 
2 2 2 2 2 
3 3 3 3 3 
4 4 4 4 4 
Run Code Online (Sandbox Code Playgroud)

我已经能够使用 tidyverse 减少行数:

example <- example %>% dplyr::filter(row_number() %% 3 != 1) 
Run Code Online (Sandbox Code Playgroud)

但我不知道如何删除每第三列。

我也尝试过使用这一行:

example[, !(c%%3==0)]
Run Code Online (Sandbox Code Playgroud)

删除数据框中的每个第 n 行开始,但我不断收到此错误: c%%3 中的错误:二元运算符的非数字参数

在此先感谢您的帮助。

小智 5

您可以在 base 中以非常简单的方式完成此操作。

example[, c(TRUE, TRUE, FALSE)]
Run Code Online (Sandbox Code Playgroud)

逻辑向量将根据列的需要重复。如果你想让它扩展,你可以做这样的事情。

n <- 3
example[, c(rep(TRUE, n - 1), FALSE)]
Run Code Online (Sandbox Code Playgroud)

如果您愿意,dplyr也可以将其等效为:

example %>%
  select(everything()[c(TRUE, TRUE, FALSE)])
Run Code Online (Sandbox Code Playgroud)