У меня есть список фреймов данных:
dd <- list()
dd$data <- list(
ONE = data.frame(inAll = c(1.1,1.2,1.3), inAll_2 = c(1.4,1.5,1.6)),
TWO = data.frame(inAll = c(2.1,2.2,2.3), inAll_2 = c(2.4,2.5,2.6)),
THREE = data.frame(inAll = c(3.1,3.2,3.3), inAll_2 = c(3.4,3.5,3.6)),
FOUR = data.frame(inAll = c(4.1,4.2,4.3), inAll_2 = c(4.4,4.5,4.6)),
FIVE = data.frame(inAll = c(5.1,5.2,5.3), inAll_2 = c(5.4,5.5,5.6)),
SIX = data.frame(inAll = c(6.1,6.2,6.3), inAll_2 = c(6.4,6.5,6.6))
)
И затем уменьшите эти фреймы данных, используя суффиксы
reduce(dd$data, full_join, by = "inAll", suffix = c("_x", "_y"))
Мой желаемый вывод -
map(dd$data, list())
НО I хотите, чтобы имена были такими же, как суффиксы в сокращенном наборе данных.
Как расширить эту функцию карты, чтобы я переименовал столбцы в списке, чтобы отразить сокращенные имена?
PATTERN:
[Я пытался просмотреть соединение исходный код для этого!] и похоже, что все соответствующие, но не объединенные столбцы:
- с заданным _x, затем _y суффиксом
- , это продолжается с _x_x и _y_y и т. д.
- если число элементов списка с повторяющимся столбцом без суффикса последний
Обратите внимание, что эти кадры данных в моем примере обычно имеют другие столбцы И столбцы не всегда находятся в одном и том же порядке поэтому я хочу избегать всего, что угодно, например * сопоставления по индексу!
new_names <- function(df) {
# logic about new suffixes somehow
map(df,list())
}
Желаемый вывод
Список, который выглядит следующим образом:
dd$data2 <- list(
ONE = data.frame(inAll = c(1.1,1.2,1.3), inAll_2_x = c(1.4,1.5,1.6)),
TWO = data.frame(inAll = c(2.1,2.2,2.3), inAll_2_y = c(2.4,2.5,2.6)),
THREE = data.frame(inAll = c(3.1,3.2,3.3), inAll_2_x_x = c(3.4,3.5,3.6)),
FOUR = data.frame(inAll = c(4.1,4.2,4.3), inAll_2_y_y = c(4.4,4.5,4.6)),
FIVE = data.frame(inAll = c(5.1,5.2,5.3), inAll_2_x_x_x = c(5.4,5.5,5.6)),
SIX = data.frame(inAll = c(6.1,6.2,6.3), inAll_2_y_y_y = c(6.4,6.5,6.6))
)