我想拆分一个字符串向量,处理它的标记,然后以原始形式重新组合它。
请考虑以下
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
具有相同形式和长度的向量,而不会丢失任何信息?
答案 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)"