如何拆分字符串向量并以原始形式重新组合它

时间:2013-12-15 00:00:45

标签: string r split

我想拆分一个字符串向量,处理它的标记,然后以原始形式重新组合它。

请考虑以下

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具有相同形式和长度的向量,而不会丢失任何信息?

2 个答案:

答案 0 :(得分: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"

答案 1 :(得分:2)

gsubfn package中的gsubfn功能可以做到这一点。例如,在这里我们将输入分成单词,将一个函数(用公式表示法表示)应用到每个单词,在这种情况下,函数将每个单词括起来,然后我们将它们全部重新组合在一起:

> library(gsubfn)
> gsubfn("\\w+", ~ sprintf("(%s)", x), vector.in)
[1] "(red) (rum)" "(mur) (der)" "(red) (rum)" "(mur) (der)"