R語言中的logical(0)和numeric(0)以及賦值問題


logical(0) 不等於 numeric(0)。兩者都不等於NULL值,即is.null(logical(0))和is.null(numeric(0))返還值都是FALSE。這很有意思,說明長度為零的值有時卻不會別算為空值,但空值的定義卻是函數中沒有被賦值的參數,特征就是沒有值。如何區分NULL和NA?很簡單,后者的logical length是1,而前者的logical length是0,意思是假如用is.logical判斷NA的邏輯值,得到的結果是TRUE。NA可以為正無窮或負無窮,但NULL永遠代表的是沒有這個值,一個空集的概念。

總結一下is.logical(condition)的返回值, 括號中的條件為以下狀態:

1. numeric(0) == numeric(0)和numeric(0) != numeric(0),返回TRUE。

2. logical(0), numeric(0), NULL,返回FALSE。

3. NA,返回TRUE。

NULL還有一個問題,就是如果用if-else循環,if(條件)的條件中的假如出現變量被“賦值”是NULL,numeric(0),還是logical(0),就會出現error message說條件中賦值長度不能為零。這里tricky的地方在於,盡管logical(0)和numeric(0)並不是NULL object,由於它們三者的“長度”都是零,它們都不算是邏輯值。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM