Ви також можете працювати з так званим булевим вектором, ака logical
:
row_to_keep = c(TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE)
myData = myData[row_to_keep,]
Зауважте, що !
оператор діє як NOT, тобто !TRUE == FALSE
:
myData = myData[!row_to_keep,]
Це здається трохи громіздким порівняно з відповіддю @ mrwab (+1 btw :)), але логічний вектор може бути сформований під час руху, наприклад, коли значення стовпця перевищує певне значення:
myData = myData[myData$A > 4,]
myData = myData[!myData$A > 4,] # equal to myData[myData$A <= 4,]
Ви можете перетворити булевий вектор у вектор індексів:
row_to_keep = which(myData$A > 4)
Нарешті, дуже акуратний трюк полягає в тому, що ви можете використовувати цей вид підмножини не тільки для видобутку, але і для призначення:
myData$A[myData$A > 4,] <- NA
де A
призначається стовпець NA
(не число), де A
перевищує 4.