Решением может быть решение на основе регулярных выражений:
Воспроизводимые данные :
set.seed(123)
df <- data.frame(
Var1 = rnorm(100),
Var2 = sample(c(paste0(LETTERS[1:10],letters[10:18], letters[18:26], letters), paste0(letters[1:10],"bundle")), 100, replace = T),
Var3 = sample(c(paste0(LETTERS[1:10],letters), paste0(letters[1:10],"bundle")), 100, replace = T))
head(df)
Var1 Var2 Var3
1 -0.56047565 Irzi cbundle
2 -0.23017749 ibundle Aa
3 1.55870831 Bmuv cbundle
4 0.07050839 Ijrs abundle
5 0.12928774 Eowo Cw
6 1.71506499 fbundle Hr
Решение :
Здесь мы paste0
все строки вместе, сопоставляем все bundle
строки, используя grepl
, и вычитаем (-
) эти строки из кадра данных which
, соответствующие шаблону:
df[-which(grepl("bundle", apply(df, 1, paste0, collapse = " "))),]
Результат :
Если мы сохраним подмножественный кадр данных как df2
, результат будет следующим:
df2 <- df[-which(grepl("bundle", apply(df, 1, paste0, collapse = " "))),]
head(df2)
Var1 Var2 Var3
5 0.1292877 Eowo Cw
7 0.4609162 Dnvn Ff
8 -1.2650612 Aksk Aa
9 -0.6868529 Gpxg Gq
10 -0.4456620 Gpxg Hr
11 1.2240818 Hrzr Eo
Примечание :
Это решение полезно, если соответствующая строка разбросана по нескольким столбцам. Если совпадение происходит только в одном столбце, нормальных процедур поднабора будет достаточно.