根据文本删除列和下一列

Delete column and next column based on text

我有这样的数据:

我想删除包含“rico”的列并删除所有后续列。我正在寻找这个:

这就是我所做的,但它不起作用:

mydata = data.frame(
  X1 = c("john", "max", "jay", "douglas"),
  X2 = c("alexia", "miguel", "vince", "gary"),
  X3 = c("peter", "rico", "joe", "jenny"),
  X4 = c("marc", "kelly", "max", "jones")
)

mydata[,grepl("rico", names(mydata))]

一些帮助将不胜感激

您可以在 grepl 命中 rico.

之前将 mydata 的范围设为 1 的子集
mydata[1:(grep("rico", mydata)-1)]
#mydata[1:(grep("rico", mydata)[1]-1)] #Alternative when there are more hists
#       X1     X2
#1    john alexia
#2     max miguel
#3     jay  vince
#4 douglas   gary

您可以使用 colSums -

mydata[cumsum(colSums(mydata == 'rico') > 0) == 0]

#       X1     X2
#1    john alexia
#2     max miguel
#3     jay  vince
#4 douglas   gary

我们使用 colSums 计算每列中出现 'rico' 的次数,我们通过将其与 > 0 进行比较来创建逻辑向量,使用 cumsum 我们 select 第一次出现该词之前的所有列。