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

numeric如何在循环中工作?

  •  0
  • colorlace  · 技术社区  · 6 年前

    我在用 is.numeric 在一个循环中,它看起来不像我期望的那样。

    > for (d in strsplit("123","")){
    >     print(as.numeric(d))
    >     print(is.numeric(d))
    >     }
    

    返回…

    [1] 1 2 3
    [1] FALSE
    

    我希望它的评价是“1”,然后是“2”,然后是“3”(同样的方法 as.numeric 计算每个字符)打印出 FALSE 每次(因为它们是字符而不是数字)。

    为什么不是这样?

    1 回复  |  直到 6 年前
        1
  •  2
  •   jtatria    6 年前

    strsplit

    str( strsplit( "123", "" ) )
    List of 1
     $ : chr [1:3] "1" "2" "3"
    

    as.numeric is.numeric FALSE

    for ( d in strsplit( "123","" ) ) {
        print( as.numeric( d ) )
        print( is.numeric( d ) ) 
        print( is.numeric( as.numeric( d ) ) )
    }
    
    for ( d in strsplit( "123", "" )[[1]] ) {
        print( as.numeric( d ) )
        print( is.numeric( d ) ) 
        print( is.numeric( as.numeric( d ) ) )
    }