Вы можете попытаться использовать stringr
str_split
, а затем вставить его с помощью применения.
apply(stringr::str_split(list, "_", simplify = T)[,1:2], 1, paste, collapse=" ")
[1] "joe joe" "bob bob"
Или используйте tidyverse
library(tidyverse)
as.tibble(list) %>%
separate(value,letters[1:2], sep="_", remove = F, extra = "drop") %>%
unite(result, a,b, sep=" ")
# A tibble: 2 x 2
value result
<chr> <chr>
1 joe_joe_ID1000 joe joe
2 bob_bob_ID20000 bob bob
.Last.value %>% pull(result)
[1] "joe joe" "bob bob"