Я думаю, что это может помочь, возможно, с некоторыми незначительными изменениями:
cols <- colnames(df)
coln <- cols[grepl("grp", cols)]
coln <- paste0("<b>",coln[2:length(coln)],":" )
coln<-c(coln, "<b>")
df$popup <- apply(df[,-1],1,paste,coln,collapse="")
df %>% mutate(popup = paste0("<h3>", location,"grp1:", popup))
Несколько небольших настроек, чтобы получить точное форматирование, которое хотел @nrcombs:
cols <- colnames(df)
coln <- cols[grepl("grp", cols)]
coln <- paste0("<br>",coln[2:length(coln)],": " )
coln<-c(coln, "<br>")
df$popup <- apply(df[,-1],1,paste,coln,collapse="")
df %>% mutate(popup = paste0("<h3>", location, "</h3><br>", "grp1: ", popup))