在您提出的問題中,我很難想象您將評估TRUE == "TRUE"
,與"TRUE" == TRUE
的情況。例如;走,我們可以運行所有的場景爲你的變量,並通過as.logical, is.logical, x == TRUE, x == FALSE, x != TRUE
等測試迭代他們的包裝功能...
什麼我們的測試功能需要做的是採取輸入只會返回在以下方面評估爲TRUE
場景R函數中的邏輯測試。
f <-function(var){
do_fun <- list(
`%s == TRUE` = function(x)x==TRUE,
`%s == FALSE` = function(x)x == FALSE,
`as.logical(%s)` = function(x)as.logical(x),
`is.logical(%s)` = function(x)is.logical(x))
a <- sapply(names(do_fun), function(i){
do.call(do_fun[[i]],list(var))
})
set_name <- sprintf(names(a),var)
a <- as.list(a)
names(a) <- set_name
a[sapply(a,`[`,1)]
}
測試上TRUE
# from base test to show
> is.logical(TRUE)
[1] TRUE
與我們的測試樂趣
現在
> f(TRUE)
$`TRUE == TRUE`
[1] TRUE
$`as.logical(TRUE)`
[1] TRUE
$`is.logical(TRUE)`
[1] TRUE
爲字符串,而不是保留字符
> f("true")
$`as.logical("true")`
[1] TRUE
> f("TRUE")
$`"TRUE" == TRUE`
[1] TRUE
$`as.logical("TRUE")`
[1] TRUE
在數值輸出邏輯人是基於所述輸入的評價而不是類
> f(10.1)
$`as.logical(10.1)`
[1] TRUE
> f(10.1 > 1)
$`TRUE == TRUE`
[1] TRUE
$`as.logical(TRUE)`
[1] TRUE
$`is.logical(TRUE)`
[1] TRUE
或
> f(1+1)
$`as.logical(2)`
[1] TRUE
'TRUE ==Ť #[1] TRUE' ''T「'可以是任何東西。順便說一句,最好是TRUE而不是縮寫T,因爲它可能導致一些問題 – akrun
在這裏評論,所以它也去@akrun ..他可能會更好地幫助。這是我綁定的東西,但無法解釋輸出:'trace(「==」); 「TRUE」== T'>雖然看起來我對文檔的解釋是正確的,但進一步的見解會有所幫助。 –
可能不是主題,但有一個函數'isTRUE'用於答案必須爲TRUE且僅與TRUE相同的情況,否則其他任何結果爲FALSE(甚至向量爲TRUE)。 –