Reputation: 1
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
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"
A <- c("Black", "Blue", "Red", "Purple", "Yellow")
B <- c("Dress", "Shoe", "T-shirt", "Long-shirt")
Upvotes: 0
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