I have a data.frame which has two list typed column like this;
df <- data.frame(arbitrary=matrix(data = 1:3,nrow = 3))
column_numeric <- list(list(1,2,3),list(4,5,6),list(7,8,9))
column_char <- list(list('A','B','C'),list('B','C','D'),list('D','G','J'))
df$column_numeric <- column_numeric
df$column_char <- column_char
df$arbitrary <- NULL
df
column_numeric column_char
1 1, 2, 3 A, B, C
2 4, 5, 6 B, C, D
3 7, 8, 9 D, G, J
I need to paste each element of each list with the same order, I mean the desired output should look so;
column_numeric column_char desired_column
<list> <list> <chr>
1 <list [3]> <list [3]> 1*A 2*B 3*C
2 <list [3]> <list [3]> 4*B 5*C 6*D
3 <list [3]> <list [3]> 7*D 8*G 9*J
base functions would be much better.
Thanks in advance.
CodePudding user response:
You can use mapply to iterate over each list. We can paste the vectors together with sep = "*" to get the multiples and collapse = " ".
df$desired_column <- mapply(
paste,
df$column_numeric,
df$column_char,
sep = "*",
collapse = " "
)
df
#> column_numeric column_char desired_column
#> 1 1, 2, 3 A, B, C 1*A 2*B 3*C
#> 2 4, 5, 6 B, C, D 4*B 5*C 6*D
#> 3 7, 8, 9 D, G, J 7*D 8*G 9*J
