Мы можем написать функцию, которая проверяет наличие if
"-" в столбце subConfig
, затем разделяет его и создает диапазон букв между ними или else
просто разделяет его на каждый символ.
get_broken_letters <- function(x) {
if (grepl("-", x)) {
indx <- which(letters %in% strsplit(x, "-")[[1]])
letters[indx[1]:indx[2]]
}
else {
strsplit(x, "")[[1]]
}
}
и затем для каждой строки мы применяем функцию, используя sapply
и paste
их с masterConfig
столбец
df$new_column <- sapply(1:nrow(df), function(x)
paste(df$masterConfig[x],get_broken_letters(df$subConfig[x]), collapse = " "))
df
# masterConfig subConfig new_column
#1 ABC xyz ABC x ABC y ABC z
#2 ABC xyz ABC x ABC y ABC z
#3 ABC xyz ABC x ABC y ABC z
#4 ABC xyz ABC x ABC y ABC z
#5 ABC xyz ABC x ABC y ABC z
#6 BFG i-k BFG i BFG j BFG k
#7 BFG i-k BFG i BFG j BFG k
#8 BFG i-k BFG i BFG j BFG k
#9 BFG i-k BFG i BFG j BFG k
#10 BFG i-k BFG i BFG j BFG k
данные
df <- data.frame(masterConfig = c(rep("ABC", 5), rep("BFG", 5)),
subConfig = c(rep("xyz", 5), rep("i-k", 5)), stringsAsFactors = FALSE)