Поиск имен в data.frame с частичным соответствием, нужно их отсортировать - PullRequest
0 голосов
/ 04 апреля 2019

Я хочу посмотреть индексы переменных в data.frame по заданной цепочке (частичных) имен переменных.Пример:

df <- data.frame(var = c("az","bz","cz"), stringsAsFactors = FALSE)

Теперь у меня есть цепочка, заданная как:

v <- c("a > b")

Я сейчас ищу отсортированные соответствующие имена переменных в data.frame.

Я делаю это с:

df$var[grep(paste(trimws(unlist(strsplit(v, ">"))), collapse = "|"), df$var)]
[1] "az" "bz"

Это работает в первом примере.Для второго примера это не удается:

v <- c("b > a")
df$var[grep(paste(trimws(unlist(strsplit(v, ">"))), collapse = "|"), df$var)]
[1] "az" "bz"

Возвращает [1] "az" "bz", тогда как Я ожидаю [1] "bz" "az".

Как мне этого добиться?

1 Ответ

2 голосов
/ 04 апреля 2019

Если вы не делаете это с помощью регулярных выражений (b|a) и оставляете их как вектор, который получен из вашей функции strsplit(), то есть c(2,1), то, зациклившись и используя grep, вы получитеправильный порядок, т.е.

df$var[sapply(trimws(unlist(strsplit(v, ">"))), function(i)grep(i, df$var))]
#[1] "bz" "az"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...