我正在努力使用 purrr:map 函数引用 tibbles 列表中一列的值来从另一列创建命名列表。任何帮助将不胜感激!
可重现的示例:
library(tidyverse)
library(tibble)
library(dplyr)
library(purrr)
v1 <- rep(letters[1:10], 3)
v2 <- rep(LETTERS[1:3], 10)
v3 <- rnorm(30)
t <- tibble(v1, v2, v3)
t2 <- t %>%
group_split(v2) %>%
map(~.x %>% modify_at("v3", ~set_names(.x, "v1")))
#我想使用“v1”中的值作为命名列表中的名称(使用“v3”中的值)。不起作用! #由
set_names()
中的错误引起:
#! nm
(30) 的尺寸必须与 x
(10) 的尺寸兼容。
t2[[1]]$v3
你想要这个:
library(dplyr)
library(purrr)
t %>%
group_split(v2) %>%
map(~ set_names(.x$v3, .x$v1))
[[1]]
a d g j c f i b e
0.125768861 -2.220447502 0.362207797 -0.431830760 0.805455774 0.321546114 -0.827056265 -1.224760040 0.008170793
h
-0.783951939
[[2]]
b e h a d g j c f i
1.12432305 0.68200700 0.58304763 0.04008495 0.91584028 0.86049333 -0.68042443 -0.23048205 -1.71889470 -1.03430104
[[3]]
c f i b e h a d g j
0.61758822 -0.85423696 -1.74924210 -1.25383234 -0.84207937 -0.08451343 -1.42264178 -0.05806052 0.16760775 1.02964839