rbind和cbind列在一起

时间:2016-10-09 04:38:53

标签: r lapply rbind cbind

我有下面的代码,其中我将SampleDf和sampleDF2列在一起,然后将两个字符向量绑定到它上面。我想要做的是创建一个函数,我可以传递另一个sampleDF3,Recipe3和成分列表,并将它们类似地rbind和cbind放在一起。有没有一种简单的方法可以像lapply或do.call那样做?我的最终目标是能够将函数传递给sampleDF,Recipe和components的列表,并将它们全部与rbind和cbind组合在一起,类似于下面的示例。

==

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

require(dplyr)
bind_all <- function(rows, cols){
  rows <- lapply(rows, as.data.frame)
  cols <- vapply(cols, as.data.frame, list(1))
  bind_cols(bind_rows(rows), cols)
}

bind_all(list(SampleDf, sampleDf2), 
         list(RecipeName=c("Recipe1","Recipe2"),ingredients=c("","Beans")))

这给了你:

         ME     RMSE      MAE        MPE     MAPE RecipeName ingredients
1 45.849072 75.65322 49.47575   21.79237 153.2550    Recipe1            
2 -1.399304 65.19925 46.56641 -364.36969 412.5394    Recipe2       Beans