Альтернатива в том же ключе @ Joran's Answer такова:
foo <- function(x) {
o <- paste(x[c(1,4,5)], collapse = "_")
substr(o, 1, nchar(o) - 4)
}
sapply(strsplit(z, "_"), foo)
Различия незначительные - я использую collapse = "_"
и nchar()
, но в остальном он похож.
Вы можете написать это как однострочник
sapply(strsplit(z, "_"),
function(x) {o <- paste(x[c(1,4,5)],
collapse = "_"); substr(o, 1, nchar(o)-4)})
но написание пользовательской функции для применения приятнее.