NatLampr
NatLampr

Reputation: 1

Concatenating every values in Two columns

I have two columns that I need contactentate the values of. For instance, I have columns for Colour (Black, Blue, Red, Purple, Yellow) and Clothing (Dress, Shoe, T-shirt, Long-shirt). I would then like to have Black Dress, Black Shoe, Black T-shirt, Black Long-shirt, Blue Dress, Blue Shoe, Blue T-shirt, etc)

I've tried using a for loop and paste functions, but it's not working the way I'm hoping it would.

A <- colour
B <- Clothing

 for(i in count(A)){ paste( print(A[i]) ,
             for (i in count(B)) {print(B[i])} 
      )
    }

Upvotes: 0

Views: 39

Answers (2)

akrun
akrun

Reputation: 887851

We can use outer

outer(A, B, FUN = paste)
#  [,1]           [,2]          [,3]             [,4]               
#[1,] "Black Dress"  "Black Shoe"  "Black T-shirt"  "Black Long-shirt" 
#[2,] "Blue Dress"   "Blue Shoe"   "Blue T-shirt"   "Blue Long-shirt"  
#[3,] "Red Dress"    "Red Shoe"    "Red T-shirt"    "Red Long-shirt"   
#[4,] "Purple Dress" "Purple Shoe" "Purple T-shirt" "Purple Long-shirt"
#[5,] "Yellow Dress" "Yellow Shoe" "Yellow T-shirt" "Yellow Long-shirt"

Or with map from purrr

library(purrr)
map(A, ~ str_c(.x, B, sep= " ")) %>%
      flatten_chr
#[1] "Black Dress"       "Black Shoe"        "Black T-shirt"     "Black Long-shirt"  "Blue Dress"        "Blue Shoe"        
#[7] "Blue T-shirt"      "Blue Long-shirt"   "Red Dress"         "Red Shoe"          "Red T-shirt"       "Red Long-shirt"   
#[13] "Purple Dress"      "Purple Shoe"       "Purple T-shirt"    "Purple Long-shirt" "Yellow Dress"      "Yellow Shoe"      
#[19] "Yellow T-shirt"    "Yellow Long-shirt"

data

A <- c("Black", "Blue", "Red", "Purple", "Yellow")
B <- c("Dress", "Shoe", "T-shirt", "Long-shirt")

Upvotes: 0

boski
boski

Reputation: 2467

If you want a matrix:

> sapply(A,function(x) paste(x,B))
     Black              Blue              Red              Purple              Yellow             
[1,] "Black Dress"      "Blue Dress"      "Red Dress"      "Purple Dress"      "Yellow Dress"     
[2,] "Black Shoe"       "Blue Shoe"       "Red Shoe"       "Purple Shoe"       "Yellow Shoe"      
[3,] "Black T-shirt"    "Blue T-shirt"    "Red T-shirt"    "Purple T-shirt"    "Yellow T-shirt"   
[4,] "Black Long-shirt" "Blue Long-shirt" "Red Long-shirt" "Purple Long-shirt" "Yellow Long-shirt"

A vector:

> as.vector(sapply(A,function(x) paste(x,B)))
 [1] "Black Dress"       "Black Shoe"        "Black T-shirt"     "Black Long-shirt"  "Blue Dress"        "Blue Shoe"        
 [7] "Blue T-shirt"      "Blue Long-shirt"   "Red Dress"         "Red Shoe"          "Red T-shirt"       "Red Long-shirt"   
[13] "Purple Dress"      "Purple Shoe"       "Purple T-shirt"    "Purple Long-shirt" "Yellow Dress"      "Yellow Shoe"      
[19] "Yellow T-shirt"    "Yellow Long-shirt"

Upvotes: 1

Related Questions