如何将数据框列与列表中的多个数据框合并?
How to merge a data frame column with multiple data frames within a list?
我有一个数据框 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
我想将 df1 的 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 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
这似乎是一个简单的问题,我真的被它困住了,所以我很感激任何帮助。谢谢!
由于我们需要将 '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)
我有一个数据框 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
我想将 df1 的 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 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
这似乎是一个简单的问题,我真的被它困住了,所以我很感激任何帮助。谢谢!
由于我们需要将 '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)