代码之家  ›  专栏  ›  技术社区  ›  con

为什么R只在'for'循环的最后一次迭代中执行测试?

r
  •  0
  • con  · 技术社区  · 3 年前

    我尝试拆分一个字符串,然后对该字符串中的每个字母运行测试。

    我想到了这个:

    str <- 'AB'
    strs <- strsplit(str, '')
    for (letter in strs) {
        writeLines(letter)
        print(identical('A', letter))
    }
    

    这将产生:

    A
    B
    [1] FALSE
    

    就是 identical 测试并没有完成,或者至少并没有打印出第一个字母 strs

    1 回复  |  直到 3 年前
        1
  •  1
  •   akrun    3 年前

    那是因为我们没有进入房间 list 要素

    for (letter in strs[[1]]) {print(letter);print(identical('A', letter))}
    [1] "A"
    [1] TRUE
    [1] "B"
    [1] FALSE
    

    > str(strs)
    List of 1
     $ : chr [1:2] "A" "B"
    > str(strs[[1]])
     chr [1:2] "A" "B"