考虑:
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,以便可以通过索引访问元素?这给访问拆分元素带来了麻烦,因为我必须首先取消列表。
答案 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