Конкатенация всех значений в двух столбцах - PullRequest
0 голосов
/ 17 июня 2019

У меня есть два столбца, для которых мне нужно указать значения. Например, у меня есть столбцы для цвета (черный, синий, красный, фиолетовый, желтый) и одежды (платье, обувь, футболка, длинная рубашка). Я бы тогда хотел иметь Черное платье, Черную обувь, Черную футболку, Черную длинную рубашку, Синее платье, Синюю обувь, Синюю футболку и т.д.)

Я пытался использовать функции for loop и paste, но это не работает так, как я надеюсь.

A <- colour
B <- Clothing

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

Ответы [ 2 ]

1 голос
/ 17 июня 2019

Если вы хотите матрицу:

> 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"

Вектор:

> 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"
0 голосов
/ 17 июня 2019

Мы можем использовать 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"

Или с map из 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")
...