首页 > 解决方案 > 从 r 中的数据框中删除每第 n 列

问题描述

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

这是我的示例数据框:

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))

看起来像这样

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

我想把它转换成看起来像这样的东西

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 

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

example <- example %>% dplyr::filter(row_number() %% 3 != 1) 

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

我也尝试过使用这条线:

example[, !(c%%3==0)]

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

在此先感谢您的帮助。

标签: rdataframe

解决方案


您可以在 base.xml 中以非常简单的方式执行此操作。

example[, c(TRUE, TRUE, FALSE)]

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

n <- 3
example[, c(rep(TRUE, n - 1), FALSE)]

如果您愿意,dplyr等效的可以是:

example %>%
  select(everything()[c(TRUE, TRUE, FALSE)])

推荐阅读