在R中拆分字符串

时间:2015-06-30 15:57:52

标签: r

考虑:

x<-strsplit("This is an example",split="\\s",fixed=FALSE)

我很惊讶地看到x的长度为1而不是长度为4:

> length(x)
[1] 1
像这样,x [3]为空。但如果我取消名单,那么:

> x<-unlist(x)
> x
[1] "This"    "is"      "an"      "example"
> length(x)
[1] 4 

现在只有x [3]是&#34;&#34;。

为什么原来这个列表的长度为4,以便可以通过索引访问元素?这给访问拆分元素带来了麻烦,因为我必须首先取消列表。

2 个答案:

答案 0 :(得分:2)

这允许strsplit为其输入参数进行矢量化。例如,它允许您拆分矢量,例如:

x <- c("string one", "string two", "and string three")

分为list分割结果。

您不需要unlist,而是可以通过其列表索引和矢量索引的组合来引用该元素。例如,如果你想获得第二个项目中的第二个单词,你可以这样做:

> x <- c("string one", "string two", "and string three")
> y  <- strsplit(x, "\\s")
> y[[2]][2]
[1] "two"

答案 1 :(得分:1)

那是因为strsplit生成一个包含每个元素(单词)的列表。 试试

> x[[1]]
#[1] "This"    "is"      "an"      "example"

> length(x[[1]])
#[1] 4