R - Pmap () вместо Map () - PullRequest
       12

R - Pmap () вместо Map ()

0 голосов
/ 05 сентября 2018

Ниже приведена база данных в формате nest().

x <- list( factory = c('a','b','c','d'), cost = c(21,30,44,100))
    x <- as.data.frame(x)
    x <-  x %>%
            melt('cost','factory')
    colnames(x) <- c('cost','client','type')
    x <- x %>%
      group_by(client)%>%
      nest()

    for (m in 1:4) {
      if(m==1){
        x$scene <- m
        x2 <- x
      }else{
        x3 <- x
        x3$scene <- m
        x2 <- rbind(x2,x3)
      }
    }
    x2 <- x2 %>%
      group_by(scene) %>%
      nest()

Он уже работает с функцией map(), но вместо того, чтобы продолжать использовать map(), я хотел бы изменить на pmap(), не теряя формат nest(). Следуйте коду, который я использую.

test <- function(df){
    mutate(df, increa = cost + 15)
}

map(x2$data, ~ map(.x$data, test)) 

x2_new <- x2 %>%    mutate(data = map(data, function(df1) mutate(df1,
data = map(data, test))))

Результат:

dput(x2_new)

структура (список (сцена = 1: 4, данные = список (структура (список (клиент =) структура (1L, .Label = "фабрика", класс = "фактор"), данные = список (структура (список (стоимость = с (21, 30, 44, 100), тип = с («а», «b», «c», «d»), increa = c (36, 45, 59, 115)), row.names = c (NA, -4L), класс = c ("tbl_df", "tbl", "data.frame")))), row.names = c (NA, -1L), класс = c ("tbl_df", "tbl", "data.frame")), структура (список ( клиент = структура (1L, .Label = "фабрика", класс = "фактор"), данные = список (структура (список (стоимость = с (21, 30, 44, 100), тип = с («а», «b», «c», «d»), increa = c (36, 45, 59, 115)), row.names = c (NA, -4L), класс = c ("tbl_df", "tbl", "data.frame")))), row.names = c (NA, -1L), класс = c ("tbl_df", "tbl", "data.frame")), структура (список ( клиент = структура (1L, .Label = "фабрика", класс = "фактор"), данные = список (структура (список (стоимость = с (21, 30, 44, 100), тип = с («а», «b», «c», «d»), increa = c (36, 45, 59, 115)), row.names = c (NA, -4L), класс = c ("tbl_df", "tbl", "data.frame")))), row.names = c (NA, -1L), класс = c ("tbl_df", "tbl", "data.frame")), структура (список ( клиент = структура (1L, .Label = "фабрика", класс = "фактор"), данные = список (структура (список (стоимость = с (21, 30, 44, 100), тип = с («а», «b», «c», «d»), increa = c (36, 45, 59, 115)), row.names = c (NA, -4L), класс = c ("tbl_df", "tbl", "data.frame")))), row.names = c (NA, -1L), класс = c ("tbl_df", "tbl", "data.frame")))), row.names = c (NA, -4L), класс = c ("tbl_df", "tbl", "data.frame"))

Код работает по этому сценарию с pmap(), но я не могу сохранить его в формате nest()

pmap(list(x2$data), ~ pmap(list(.x$data), test))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...