you are using the wrong format then to read in the data since you are using the active delimiter in two forms here.
you can either replace the "fake" comma with another delimiter and switch it back after reading in the data, or you can make the line delimiter something else eg tab and then the comma will be read in correctly.
here is option A (note that this assumes your offending column is the last one)
txt <- ("ID, Type, Value\n1, 27, Startup\n2, 28, Load system\n3, 28, Initialise system\n4, 10, Processing data\n5, 10, Processed data, written result to file\n6, 30, Shutdown")
cat(txt,file = 'temp.csv',sep = '\n')
my_lines <- readLines('temp.csv')
#number of assumed columns in data
colnums <- 3
#locate bad line(s)
idx <- stringi::stri_count(my_lines,regex = ',')>(colnums-1)
#replace delimiter
my_lines[idx] <- stringi::stri_replace_last(my_lines[idx],'XXX',regex=',')
#collapse back
new_txt <- paste0(my_lines,collapse = '\n')
problem_data <- readr::read_csv(new_txt)
stringi::stri_replace_all(problem_data$Value,',',regex='XXX')
[1] "Startup"
[2] "Load system"
[3] "Initialise system"
[4] "Processing data"
[5] "Processed data, written result to file"
[6] "Shutdown"