R-将2维矢量转换为1维命名矢量

问题描述 投票:2回答:2

如何更好地做到这一点?我正在寻找将键值对的向量转换为连接字符串,转换为以键为名称的值向量。

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()
r purrr
2个回答
0
投票

您可以在simplify = TRUE中使用str_split,然后使用set_names

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

#    key1     key2 
#"value1" "value2" 

0
投票

我一直很喜欢data.table::tstrsplit

library(data.table)
tstrsplit(x,"\\|") %>% {setNames(.[[2]],.[[1]])}
#    key1     key2 
#"value1" "value2"
© www.soinside.com 2019 - 2024. All rights reserved.