R - преобразовать 2-й вектор в 1-й именованный вектор - PullRequest
2 голосов
/ 29 апреля 2020

Как это можно сделать более элегантно? Я хочу преобразовать вектор пар ключ-значение в виде сцепленных строк в вектор значений с ключами в качестве имен.

library(tidyverse)
library(purrr)

x <- c("key1|value1", "key2|value2")

# Current way
x_split <- x %>% str_split("\\|")
keys <- x_split %>% map(pluck(1)) %>% unlist()
values <- x_split %>% map(pluck(2)) %>% unlist()

y <- values %>% set_names(keys)

# More elegant way
y <- x %>% some_functions()

Ответы [ 2 ]

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

Мне всегда нравилось data.table::tstrsplit.

library(data.table)
tstrsplit(x,"\\|") %>% {setNames(.[[2]],.[[1]])}
#    key1     key2 
#"value1" "value2"
1 голос
/ 29 апреля 2020

Вы можете использовать simplify = TRUE в str_split и использовать set_names.

stringr::str_split(x, "\\|", simplify = TRUE) %>% {purrr::set_names(.[, 2], .[, 1])}

#    key1     key2 
#"value1" "value2" 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...