Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何拆分字符串向量并将其重新组合为原始形式_String_R_Split - Fatal编程技术网

String 如何拆分字符串向量并将其重新组合为原始形式

String 如何拆分字符串向量并将其重新组合为原始形式,string,r,split,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="

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

请考虑以下

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=" ")

我应该如何处理它,以便输出与原始
向量具有相同形式和长度的向量。在
中,即不丢失任何信息?

问题在于
未列出
。这就过早地删除了结构。然后您需要围绕元素循环并传递到
粘贴
函数。我将对循环使用
lappy

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"

vector.in中的
unlist
是问题所在。这就过早地删除了结构。然后您需要围绕元素循环并传递到
粘贴
函数。我将对循环使用
lappy

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"

中的
gsubfn
函数执行该操作。例如,这里我们将输入拆分为单词,对每个单词应用一个函数(以公式表示法表示),在这种情况下,函数将每个单词括起来,然后我们将其全部放回一起:

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

中的
gsubfn
函数执行此操作。例如,这里我们将输入拆分为单词,对每个单词应用一个函数(以公式表示法表示),在这种情况下,函数将每个单词括起来,然后我们将其全部放回一起:

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