strsplit

时间:2017-10-02 00:41:43

标签: r

在以下示例中

x = strsplit('30 min', ' ')

docs状态的返回值是

  

与x相同长度的列表,其第i个元素包含x [i]的分裂向量。

我希望x[[1]]返回30x[[2]]返回min

但是x[[1]][1]会返回30x[[1]][2]会返回min

对此有何解释?

2 个答案:

答案 0 :(得分:4)

你得到的结果是因为你只拆分了一个元素(这个答案扩展了最初由@R. Schifini做出的评论)。

x <- '30 min'
length(x)
#> [1] 1
strsplit(x, ' ')
#> [[1]]
#> [1] "30"  "min"

尝试拆分3个字符串的向量,你将获得一个包含3个向量的列表,每个向量包含单个字符串的拆分结果。

x <- c( '30 min', '15 min', '20 30 min etc')
length(x)
#> [1] 3
strsplit(x, ' ')
#> [[1]]
#> [1] "30"  "min"
#> 
#> [[2]]
#> [1] "15"  "min"
#> 
#> [[3]]
#> [1] "20"  "30"  "min" "etc"

答案 1 :(得分:2)

解释是strsplit需要一个输入字符串向量,每个输入字符串都将被拆分为一个字符串数组,这些字符串以列表的形式返回。 如果您只提供这一个字符串,则会将其视为向量的单个条目。因此,结果是一个列表,其中包含一个条目(x[[1]])和它的拆分内容(x[[1]][1]x[[1]][2]),如您所述。

只需使用x = unlist(strsplit('30 min', ' '))即可获得字符向量,x[1]返回30x[2]返回min