在R中,除了第n列(我们不知道列的数量)之外,是否有一种方法可以根据所有列上的条件过滤TIBLE?

在R中,除了第n列(我们不知道列的数量)之外,是否有一种方法可以根据所有列上的条件过滤TIBLE?,r,select,filter,dplyr,R,Select,Filter,Dplyr,我想删除除第一列之外的所有列中包含空字符串的行。如果我知道有多少列,我可以这样做,因为我可以使用以下方法(假设tibble中有三列): 但是,当我不知道列数时,我需要代码 理想的解决方案将尽可能多地使用tidyverse:) 救命啊 主题指的是第n列,但问题和问题中的示例指的是第一列,因此我们假设第一列的意思是。如果不是这样,请使用ncol查找列数 使用内置的anscombe数据框并设置一些空格,以下任何一项都可以工作。请注意,我们在dplyr附带的vignette之后使用并定义了rowAnyb

我想删除除第一列之外的所有列中包含空字符串的行。如果我知道有多少列,我可以这样做,因为我可以使用以下方法(假设tibble中有三列):

但是,当我不知道列数时,我需要代码

理想的解决方案将尽可能多地使用tidyverse:)


救命啊

主题指的是第n列,但问题和问题中的示例指的是第一列,因此我们假设第一列的意思是。如果不是这样,请使用
ncol
查找列数

使用内置的anscombe数据框并设置一些空格,以下任何一项都可以工作。请注意,我们在dplyr附带的vignette之后使用并定义了
rowAny
base R函数

a <- anscombe; a[1, -1] <- ""  # input data   

a %>% filter(rowSums(across(-1, ~ . != "")) > 0)

rowAny <- function(x) rowSums(x) > 0  # see colwise dplyr vignette
a %>% filter(rowAny(across(-1, ~ . != "")))

a %>% rowwise %>% filter(any(c_across(-1) != "")) %>% ungroup

a %>% filter(rowAny(.[-1] != ""))

a[rowAny(a[-1] != ""), ] # base R
a(0)
rowAny 0#参见colwise dplyr渐晕图
%>%筛选器(rowAny(跨(-1,~.!=“”))行)
%%>%rowwise%%>%筛选器(任何(跨(-1)!=“”)的c_)%%>%ungroup
%>%筛选器(行任何(.-1]!=“”)
a[rowAny(a[-1]!=”),]

您可以使用基本R
ncol
函数获取
数据帧
矩阵
的列计数:
ncols这是否回答了您的问题?非常感谢你。这些都是优雅的解决方案。我遇到的问题是保留数据集中的第一列,以便以后进行管道处理。你帮了大忙!
a <- anscombe; a[1, -1] <- ""  # input data   

a %>% filter(rowSums(across(-1, ~ . != "")) > 0)

rowAny <- function(x) rowSums(x) > 0  # see colwise dplyr vignette
a %>% filter(rowAny(across(-1, ~ . != "")))

a %>% rowwise %>% filter(any(c_across(-1) != "")) %>% ungroup

a %>% filter(rowAny(.[-1] != ""))

a[rowAny(a[-1] != ""), ] # base R