Списки rbind и cbind вместе

У меня есть код ниже, в котором я связываю вместе списки SampleDf и sampleDF2, а затем привязываю к ним два символьных вектора. Что я хотел бы сделать, так это создать функцию, в которой я мог бы передать ей другой sampleDF3, Recipe3 и список ингредиентов и таким же образом связать их rbind и cbind вместе. Есть ли простой способ сделать это с помощью like lapply или do.call? Моя конечная цель - передать функции список sampleDF, рецептов и ингредиентов и объединить их вместе с помощью rbind и cbind, как в примере ниже.

Code:
try1<-cbind(cbind(RecipeName<-c("Recipe1","Recipe2"),ingredients<-c("","Beans"))
          ,rbind(
                  SampleDf
                 ,sampleDf2

                  )
             )


Data:

dput(SampleDf)
structure(c(45.8490717149901, 75.6532220962743, 49.4757541141121, 
21.7923657299986, 153.255016847245), .Dim = c(1L, 5L), .Dimnames = list(
    "Test set", c("ME", "RMSE", "MAE", "MPE", "MAPE")))

dput(sampleDf2)
structure(c(-1.39930351254246, 65.1992541962796, 46.5664097914753, 
-364.369685854671, 412.539393211685), .Dim = c(1L, 5L), .Dimnames = list(
    "Test set", c("ME", "RMSE", "MAE", "MPE", "MAPE")))

dput(sampleDf3)
structure(c(0, 65.1992541962796, 1, 
-364.369685854671, 10), .Dim = c(1L, 5L), .Dimnames = list(
    "Test set", c("ME", "RMSE", "MAE", "MPE", "MAPE")))

person modLmakur    schedule 09.10.2016    source источник
comment
Если вы посмотрите на вывод try1, это все символьные столбцы. Я думаю, это не то, что вы хотели, верно? поместите наборы данных sample в list, конвертируйте в data.frame и затем используйте do.call(rbind, т.е. res <- do.call(rbind, lapply(mget(ls(pattern="(?i)SampleDf\\d*")), as.data.frame))   -  person akrun    schedule 09.10.2016


Ответы (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
person Rentrop    schedule 09.10.2016