【发布时间】:2018-12-28 23:10:51
【问题描述】:
有没有办法在使用purrr::reduce后避免丢失列表的名称属性?
示例
我有一个清单:
library(tidyverse)
l <- list(A = data_frame(ID = c(101, 102, 103),
x = c(1,2,3)),
B = data_frame(ID = c(101, 102, 103),
x = c(4,5,6)),
C = data_frame(ID = c(101, 102, 103),
x = c(7,8,9)))
我可以使用reduce 加入“ID”上的列表,然后使用setNames 像这样命名列。
l %>%
purrr::reduce(left_join, by = "ID") %>%
setNames(c("ID", names(l)))
但我想获取此列表并将其直接通过管道传输到purrr::reduce,然后重命名列“A”、“B”和“C”而不创建对象l,但是当我这样做时,列表名称不再可用。
问题
我可以对下面的代码做些什么来更改列“x”的名称,而无需创建列表l 或指定各个列名称?
list(A = data_frame(ID = c(101, 102, 103),
x = c(1,2,3)),
B = data_frame(ID = c(101, 102, 103),
x = c(4,5,6)),
C = data_frame(ID = c(101, 102, 103),
x = c(7,8,9))) %>%
purrr::reduce(left_join, by = "ID")
【问题讨论】: