2013-12-15 2 views
0

Я хотел бы разбить вектор строки, обработать ее жетоны и затем перекомпоновать ее в исходной форме.Как разбить вектор строки и перекомпоновать ее в исходной форме

Пожалуйста, обратите внимание следующее

vector.in <- c("red rum", "mur der", "red rum", "mur der") 
length(vector.in) 
# [1] 4 
vector.splt <- strsplit(vector.in, "\\s") 
vector.splt <- unlist(vector.splt) 
vector.out <- paste(vector.splt, sep="", collapse=" ") 

и конечно

length(vector.out) 
# [1] 1 

Как следует обработать так, чтобы вывести вектор с одной и той же формы и длины, что и исходный vector.in, то есть без потери любая информация?

ответ

3

Проблема unlist. Это слишком рано удаляет структуру. Затем вам нужно обойти элементы и перейти к функции paste. Я буду использовать lapply для цикла:

vector.in <- c("red rum", "mur der", "red rum", "mur der") 
vector.splt <- strsplit(vector.in, "\\s") 
unlist(lapply(vector.splt, paste, collapse=' ')) 
## [1] "red rum" "mur der" "red rum" "mur der" 
2

gsubfn функция в gsubfn package делает это. Например, здесь мы разбиваем входные слова на слова, применяем функцию (представленную формулой) к каждому слову, где в этом случае функция заключает в скобки каждое слово, а затем мы складываем все это вместе:

> library(gsubfn) 
> gsubfn("\\w+", ~ sprintf("(%s)", x), vector.in) 
[1] "(red) (rum)" "(mur) (der)" "(red) (rum)" "(mur) (der)" 
Смежные вопросы