0
votes

This is my code:

Regiao_Norte <- c('AM', 'RR', 'AP', 'PA', 'TO', 'RO', 'AC')
rows_Norte<- 'Regiao_Norte'
Regiao_Nordeste <- c('MA', 'PI', 'CE', 'RN', 'TO', 'PE', 'PB', 'SE', 'AL', 'BA')
rows_Nordeste<- 'Regiao_Nordeste'
Regiao_Centro_Oeste <- c('MT', 'MS', 'GO')
rows_Centro_Oeste<- 'Regiao_Centro_Oeste'
Regiao_Sudeste <- c('SP', 'RJ', 'ES', 'MG')
rows_Sudeste<- 'Regiao_Sudeste'
Regiao_Sul <- c('PR', 'RS', 'SC')
rows_Sul<- 'Regiao_Sul'

part_1<-cbind(rows_Norte,Regiao_Norte)
part_2<-cbind(rows_Nordeste,Regiao_Nordeste)
part_3<-cbind(rows_Centro_Oeste,Regiao_Centro_Oeste)
part_4<-cbind(rows_Sudeste,Regiao_Sudeste)
part_5<-cbind(rows_Sul,Regiao_Sul)

Using dplyr is possible to achieve this result?

rbind(part_1,part_2,part_3,part_4,part_5)

I start with 5 vectors and I would like to create a data.frame with vectors elements in a second column and as the first column the names of this vectors: Regiao_Norte, ...

The code above is not that clever. Any suggestion to use dplyr package to achieve that result?

1
Hi I manage to do this: region_list<- list(Regiao_Norte, Regiao_Nordeste, Regiao_Centro_Oeste, Regiao_Sudeste, Regiao_Sul) names(region_list)<- c('Regiao_Norte', 'Regiao_Nordeste', 'Regiao_Centro_Oeste', 'Regiao_Sudeste', 'Regiao_Sul') unnest(enframe(lista),cols = c(value)) From the good manner point of view is a godd solution?Laura
please provide your initial start data. It seems to me that there is indeed a simple solution but hard to tell without your initial datamnist

1 Answers

2
votes

You can write a simple function to create a data frame from vectors. "rlang" library has very nice functions for working with r objects

library(rlang)
Regiao_Norte <- c('AM', 'RR', 'AP', 'PA', 'TO', 'RO', 'AC')
Regiao_Nordeste <- c('MA', 'PI', 'CE', 'RN', 'TO', 'PE', 'PB', 'SE', 'AL', 'BA')
Regiao_Centro_Oeste <- c('MT', 'MS', 'GO')
Regiao_Sudeste <- c('SP', 'RJ', 'ES', 'MG')
Regiao_Sul <- c('PR', 'RS', 'SC')

create_df = function(objects) {
    df = data.frame(NULL)
    for (object in objects){
    df = rbind(df, data.frame(region = object, value =  eval(sym(object)), stringsAsFactors = F))
      } 
    return(df)
  }

out = create_df(c("Regiao_Norte","Regiao_Nordeste","Regiao_Centro_Oeste","Regiao_Sudeste","Regiao_Sul"))
out