@ Ник Саббе дал отличный ответ, но у него есть одно предупреждение:
Использование -which(...)
- это отличный способ (иногда) ускорить операцию поднабора, когда нужно удалить только несколько элементов.
... Но если нет элементов , которые нужно удалить, это не удастся!
Итак, если X$genes
не содержит пустых строк, which
вернет пустой целочисленный вектор. Отрицание это все еще пустой вектор. И X [integer (0)] возвращает пустой data.frame!
toBeRemoved <- which(X$genes=="")
if (length(toBeRemoved>0)) { # MUST check for 0-length
X<-X[-toBeRemoved,]
}
Или, если увеличение скорости не важно, просто:
X<-X[X$genes!="",]
Или, как указал @nullglob,
subset(X, genes != "")