Назначьте ключи значениям с разделителями во всех элементах списка - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть следующая структура данных:

keys <- c("key1", "key2", "key3")
values <- c("val1_val2_val3", "wert1_wert2_wert3", "n1_n2_n3", "out1_out2_out3")

Я хочу объединить эти списки, чтобы каждый ключ отображался в соответствующий блок для каждого элемента списка. Например, ответ на запрос первого key1 должен дать:

response$key1
> "val1" "wert1" "n1" "out1"

У вас есть подсказка, как решить эту задачу?

1 Ответ

1 голос
/ 24 апреля 2020

В базе R мы можем разделить values на '_', объединить их как матрицу и разделить по столбцам.

response <- setNames(asplit(do.call(rbind, strsplit(values, "_")), 2), keys)
#Similarly
#response <- setNames(asplit(do.call(cbind, strsplit(values, "_")), 1), keys)
response

#$key1
#[1] "val1"  "wert1" "n1"    "out1" 

#$key2
#[1] "val2"  "wert2" "n2"    "out2" 

#$key3
#[1] "val3"  "wert3" "n3"    "out3" 

Это коротко и почти дает аналогичный результат

purrr::transpose(strsplit(values, "_"), .names = keys)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...