1) grepl Есть несколько проблем:
- в тестовых данных в вопросе есть ошибки, поэтому мы используем тот, что в примечании в конце
- хотя и не является строго неправильным,
c
не подходит для использования, учитывая повсеместное использование функции c
в R, поэтому мы используем cc
вместо - мы используем
grepl
с l
в конце вместо grep
, чтобы получить результат логического вектора, а затем использовать! чтобы отрицать это. rm
используется для удаления объектов из рабочей области, а не для удаления строк из фрейма данных, поэтому вместо этого мы используем индексы.
Пакеты не используются.
cc[!grepl("z", rownames(cc)), ]
## c1 c2 c3
## fish 89 89 0
2) grep В качестве альтернативы можно также использовать grep
с invert=TRUE
аргумент:
cc[grep("z", rownames(cc), invert = TRUE), ]
## c1 c2 c3
## fish 89 89 0
3) substr В этом примере символ z
всегда отображается в качестве первого символа, поэтому в общем случае мы можем поочередно использовать:
cc[substr(rownames(cc), 1, 1) != "z", ]
## c1 c2 c3
## fish 89 89 0
3a) начинается с Другой подход, если z
должен быть первым символом:
cc[!startsWith(rownames(cc), "z"), ]
## c1 c2 c3
## fish 89 89 0
Примечание
cc <- data.frame(c1 = c(78, 89, 0), c2 = c(89, 89, 34), c3 = c(56, 0, 4))
row.names(cc) <- c("zebra", "fish", "zucchini")