Как объединить столбец фрейма данных с несколькими фреймами данных в списке? - PullRequest
1 голос
/ 04 июня 2019

У меня есть фрейм данных df1 с тремя столбцами с именами x, y и z

df1
x y z
8 2 8
9 3 1
1 7 2

У меня также есть список, содержащий 30 фреймов данных df2, df3, ... df31, каждый из которых имеет три столбца a, b и c.

list1
df2        df3        ...      df31
a b c      a b c               a b c 
4 7 5      4 8 6               3 1 7 
9 5 3      3 1 9               4 8 6
8 6 1      2 9 1               1 6 3

Я хочу объединить столбец y из df1 с каждым кадром данных в списке как новый столбец. Поэтому новый список должен выглядеть так:

list2
df2          df3          ...      df31
a b c y      a b c y               a b c y 
4 7 5 2      4 8 6 2               3 1 7 2 
9 5 3 3      3 1 9 3               4 8 6 3
8 6 1 7      2 9 1 7               1 6 3 7

Я использовал следующий код:

list2 <- mapply("cbind", list1, df1$y, SIMPLIFY = FALSE)

однако это только кажется, что оно принимает первое значение y и помещает его в новый столбец:

list2
df2          df3          ...      df31
a b c y      a b c y               a b c y 
4 7 5 2      4 8 6 2               3 1 7 2 
9 5 3 2      3 1 9 2               4 8 6 2
8 6 1 2      2 9 1 2               1 6 3 2

Это кажется легкой проблемой, и я просто застрял с ней, поэтому буду признателен за любую помощь. Спасибо!

1 Ответ

3 голосов
/ 04 июня 2019

Поскольку нам нужен столбец 'y' в целом, он может быть заключен в list.В противном случае он будет циклически проходить по каждому элементу столбца (также, возможно, будут и предупреждения, поскольку длина не будет совпадать)

Map(cbind, list1, y = list(df1$y))

или

mapply(cbind, list1, y = list(df1$y), SIMPLIFY = FALSE)

Кроме того, это может быть легко сделано с lapply

lapply(list1, transform, y = df1$y)
...