Вот несколько подходов.
Здесь используется функция list_reduction
из SOfun .
df <- data.frame(A = c("1,2,3,4", "9,10,11,12,13"),
B = c("5,6,7,8", "14,15,16,17,18"))
## Grab `list_reduction` from "SOfun"
source("https://raw.githubusercontent.com/mrdwab/SOfun/master/R/list_reduction.R")
## Split the list
df_list <- lapply(df, function(x) type.convert(strsplit(as.character(x), ",", fixed = TRUE)))
df["C"] <- list_reduction(df_list, "+", flatten = TRUE)
df
# A B C
# 1 1,2,3,4 5,6,7,8 6, 8, 10, 12
# 2 9,10,11,12,13 14,15,16,17,18 23, 25, 27, 29, 31
Здесь используется cSplit
из "splitstackshape" :
library(splitstackshape)
library(data.table)
cSplit(as.data.table(df, keep.rownames=TRUE), c("A", "B"), ",", "long")[
, C := A + B][, lapply(.SD, toString), "rn"]
# rn A B C
# 1: 1 1, 2, 3, 4 5, 6, 7, 8 6, 8, 10, 12
# 2: 2 9, 10, 11, 12, 13 14, 15, 16, 17, 18 23, 25, 27, 29, 31