在以下示例中
x = strsplit('30 min', ' ')
docs状态的返回值是
与x相同长度的列表,其第i个元素包含x [i]的分裂向量。
我希望x[[1]]
返回30
和x[[2]]
返回min
但是x[[1]][1]
会返回30
而x[[1]][2]
会返回min
。
对此有何解释?
答案 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]
返回30
,x[2]
返回min
。