【发布时间】:2021-08-01 21:51:12
【问题描述】:
在stackoverflow帖子here下面的代码中,第二行中的代码是如何工作的,即以str_split开头的行?
此外,为什么[[1]] 在代码的第二行?它有什么作用?
string1 <- "This is my string"
strsplit(string1, " ")[[1]]
# [1] "This" "is" "my" "string"
【问题讨论】:
标签: r
在stackoverflow帖子here下面的代码中,第二行中的代码是如何工作的,即以str_split开头的行?
此外,为什么[[1]] 在代码的第二行?它有什么作用?
string1 <- "This is my string"
strsplit(string1, " ")[[1]]
# [1] "This" "is" "my" "string"
【问题讨论】:
标签: r
这里,strsplit 的输入是length 1 的向量,strsplit 总是返回一个列表。 list 的 length 也与向量的长度相同。因此,当我们执行[[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]],这是错误的,因为它只会将第一个元素提取为向量
【讨论】: