Try something like this
df <- structure(list(ColA = c("1", "1,2"), ColB = c("asd", "asd,dfdsf"
)), class = "data.frame", row.names = c(NA, -2L))
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
library(purrr)
library(magrittr)
#>
#> Attaching package: 'magrittr'
#> The following object is masked from 'package:purrr':
#>
#> set_names
library(glue)
#>
#> Attaching package: 'glue'
#> The following object is masked from 'package:dplyr':
#>
#> collapse
df2 <-
dplyr::mutate(df,ColC = purrr::map2(ColA,ColB,
function(ca,cb){
# glue::glue("ca: {ca}, cb: {cb}")
ca <- strsplit(ca,',')[[1]]
cb <- strsplit(cb,',')[[1]]
ca <- (c(ca,''))[1:2]
cb <- (c(cb,''))[1:2]
# glue::glue("ca: {ca}, cb: {cb}")
p1 <- "<table border=1><tr><th>Ratings</th><th>Text</th></tr>"
p2 <- paste(glue::glue("<tr><td>{ca}</td><td>{cb}</td></tr>"),collapse = '')
p3 <- "</table>"
paste(p1,p2,p3,sep='')
}))
df2$ColC
#> [[1]]
#> [1] "<table border=1><tr><th>Ratings</th><th>Text</th></tr><tr><td>1</td><td>asd</td></tr><tr><td></td><td></td></tr></table>"
#>
#> [[2]]
#> [1] "<table border=1><tr><th>Ratings</th><th>Text</th></tr><tr><td>1</td><td>asd</td></tr><tr><td>2</td><td>dfdsf</td></tr></table>"
Created on 2021-06-17 by the reprex package (v2.0.0)