Я изучаю R и экспериментирую с подмножеством() и grepl() с Regex для фильтрации кадра данных. Я создал очень маленькую dataframe, чтобы играть с:subset() с grepl() с использованием REGEX для фильтрации данных в R
x y z w
1 10 a k
2 12 b l
3 14 c m
4 16 d n
5 18 e o
Мой код заключается в следующем:
subset(df14, grepl('^c | [l - n]', c(df14$z , df14$w)), grepl('[yz]', colnames(df14)))
На мой взгляд, второй аргумент должен возвращать индексы строк найденных grepl() для соответствия шаблону в столбцах с именами: 'z' или 'w'. Однако это не то, что происходит (возвращает пустой фреймворк с столбцами y и z).
Я ожидал бы вернуть строки 2,3,4, поскольку столбец «w» содержит буквы l, m, n, указанные в шаблоне регулярного выражения [ln], и столбцы z и w, так как эти имена соответствуют регулярному выражению [ yz] в третьем аргументе подмножества().
(я подозреваю, что он ищет совпадения в названиях столбцов, а содержание столбцов, что меня интересует.)
Очевидно, что я не заинтересован в результате таковой. Это эксперимент, чтобы понять, как работают функции. Итак, я ищу объяснение и способ исправить конкретный код - не альтернативное решение.
Ваш совет будет оценен по достоинству.
Что такое нужная outpu хотя? Кроме того, если ваши столбцы содержат одиночные буквы, нет необходимости в регулярном выражении, а '=='/'% in%' или 'match' должно быть более эффективным. –