【问题标题】:How does line in R code that uses strsplit work? [duplicate]使用 strsplit 的 R 代码中的行如何工作? [复制]
【发布时间】: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


    【解决方案1】:

    这里,strsplit 的输入是length 1 的向量,strsplit 总是返回一个列表。 listlength 也与向量的长度相同。因此,当我们执行[[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]],这是错误的,因为它只会将第一个元素提取为向量

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-16
      • 2013-05-04
      • 2020-07-14
      • 1970-01-01
      • 1970-01-01
      • 2018-09-19
      • 1970-01-01
      • 2011-08-18
      相关资源
      最近更新 更多