首页 文章

将merge应用于data.frames列表

提问于
浏览
4

我有一个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)

我知道我可以在几个data.frames中分割 list.df 然后单独分别 merge ,但我想知道是否有办法在 list 中进行

谢谢

2 回答

  • 0

    你有两个错误 . 一个在你的函数中,另一个在你如何调用你的函数:

    func <- function(x,y){merge(x, y, by.x=names(x)[1], by.y=names(y)[1])}
    lapply(list.df, func, df)
    
  • 7

    不太确定这是否有帮助,但合并列表也许尝试

    df.list <- do.call(merge,list.df[c(1,5,8)])
    

    但我要注意的一件事是,从它的外观来看,你的数据帧列没有名称......在合并之前命名列,这应该有帮助......

    colnames(df) <- c("col1","col2","col3")
    

相关问题