2017-01-10 1 views
3

У меня есть много строк, как показано ниже.R: Как разбить строку и сохранить ее?

> x=c("cat_1_2_3", "dog_2_6_3", "cow_2_8_6") 
> x 
[1] "cat_1_2_3" "dog_2_6_3" "cow_2_8_6" 

Я бы хотел отделить строку, сохранив первую ее часть, как показано ниже.

"cat_1" "cat_2" "cat_3" "dog_2" "dog_6" "dog_3" "cow_2" "cow_8" "cow_6" 

Любые предложения?

ответ

2

Мы можем использовать sub

scan(text=sub("([a-z]+)_(\\d+)_(\\d+)_(\\d+)", "\\1_\\2,\\1_\\3,\\1_\\4", 
      x), what ='', sep=",", quiet = TRUE) 
#[1] "cat_1" "cat_2" "cat_3" "dog_2" "dog_6" "dog_3" "cow_2" "cow_8" "cow_6" 

Или другой вариант split строка с

unlist(lapply(strsplit(x, "_"), function(x) paste(x[1], x[-1], sep="_"))) 
1

Вы могли бы попытаться разделить строку, а затем вновь объединить с помощью paste.

f <- function(x) { 
    res <- strsplit(x,'_')[[1]] 
    paste(res[1], res[2:4], sep='_') 
} 

x <- c("cat_1_2_3", "dog_2_6_3", "cow_2_8_6") 

unlist(lapply(x, f)) 

 Смежные вопросы

  • Нет связанных вопросов^_^