我有一个data.frames列表,只有一列和character
值:
> list.df[c(1,5,8)]
$1
X..1L..
1 A
2 B
3 C
4 D
5 E
6 F
7 G
8 H
$5
X..5L..
1 A
2 C
3 D
4 F
5 G
$8
X..8L..
1 A
2 D
3 F
4 G
5 H
6 I
另一个data.frame
> df
V2 V5 V9
1 A 31 0.13029
2 B 80 0.29443
3 C 166 0.01354
4 D 11 0.39589
5 E 62 0.61794
6 F 40 0.35808
7 G 31 0.62581
8 H 54 0.24983
9 I 19 0.47199
10 J 97 0.26518
我想将列表中的每个data.frame与df
合并,我尝试创建一个函数
func <- function(x,y){merge(x, y, by.x=x[,1], by.y=y[,1])}
然后将其应用于列表但不起作用。
lapply(list.df, func, list.df, df)
我知道我可以将list.df
分成几个data.frames,然后分别merge
分别排成一行,但我想知道是否有办法在list
中执行此操作
由于
答案 0 :(得分:7)
你有两个错误。一个在你的功能中,另一个在你如何称呼你的功能:
func <- function(x,y){merge(x, y, by.x=names(x)[1], by.y=names(y)[1])}
lapply(list.df, func, df)
答案 1 :(得分:0)
不太确定这是否有帮助但是合并列表也许可以尝试
df.list <- do.call(merge,list.df[c(1,5,8)])
但我要注意的一件事是,从它的外观来看,你的数据帧列没有名称......在合并之前命名列,这应该有帮助......
colnames(df) <- c("col1","col2","col3")