Один из вариантов - захватить строчную букву и следующую заглавную букву, а затем вставить _
при добавлении обратной ссылки (\\1
, \\2
) захваченной группы
sub("([a-z])([A-Z])", "\\1_\\2", v1)
#[1] "Var_Length" "Var_Width"
Если есть еще экземпляры, используйте gsub
gsub("(?<=[a-z])(?=[A-Z])", "_", v2, perl = TRUE)
#[1] "Var_Length_Mean" "Var_Width_Mean"
данные
v1 <- c("VarLength", "VarWidth" )
v2 <- c("VarLengthMean", "VarWidthMean")