在下面来自 stackoverflow 帖子 here 的代码中,第二行中的代码如何工作,即以 str_split
开头的行?
另外,为什么代码的第二行是 [[1]]
?它有什么作用?
string1 <- "This is my string"
strsplit(string1, " ")[[1]]
# [1] "This" "is" "my" "string"
答案 0 :(得分:3)
此处,strsplit
的输入是 length
1 的向量,strsplit
始终返回一个列表。 length
的 Te list
也与向量的长度相同。因此,当我们执行 [[1]]
时,它从 list
中提取向量元素。使用 str
> out <- strsplit(string1, " ")
> length(out)
[1] 1
> str(out)
List of 1 #### list of 1 element
$ : chr [1:4] "This" "is" "my" "string"
[[
提取元素
> str(out[[1]])
chr [1:4] "This" "is" "my" "string"
考虑输入的长度是否> 1
> string2 <- rep(string1, 5)
> out2 <- strsplit(string2, " ")
> str(out2)
List of 5
$ : chr [1:4] "This" "is" "my" "string"
$ : chr [1:4] "This" "is" "my" "string"
$ : chr [1:4] "This" "is" "my" "string"
$ : chr [1:4] "This" "is" "my" "string"
$ : chr [1:4] "This" "is" "my" "string"
现在,我们的长度 > 1。人们常犯的一个错误是这里也使用 [[1]]
,这是错误的,因为它只会提取第一个元素作为向量