首页 > 解决方案 > 将常量从逻辑恢复为在输出中呈现

问题描述

我想得到这个输出(首先将数据转换为逻辑向量,然后通过 if else 循环以基于向量的逻辑比较获得输出):

10 2 4 8 11 6 5
 10 equal to normal.
 Caution: 2 is less than normal.
 Caution: 4 is less than normal.
 8 equal to normal.
 11 equal to normal.
 6 equal to normal.
 5 equal to normal.

我试过这个:

m3<-c(10,2,4,8,11,6,5)
m3
str(m3)
mu3<-unlist(m3, recursive = TRUE, use.names = TRUE)
n3<-as.numeric(mu3)
n3
str(n3)
dg3<-5
dg3
class(dg3)
dg1<-as.logical(dg3)
dg1
class(dg1)
dg <-(n3 >= 5)
dg
{cat (m3)}
for (r4 in dg) {
    if (r4 == dg.1) {
    cat("\n", r4,"equal to normal.")
    }
    else {
    cat("\n Caution: ", "is less than normal.")
    }
}

但我得到:

10 2 4 8 11 6 5
 TRUE equal to normal.
 Caution:  is less than normal.
 Caution:  is less than normal.
 TRUE equal to normal.
 TRUE equal to normal.
 TRUE equal to normal.
 TRUE equal to normal.

标签: r

解决方案


I think you can replace the whole thing with:

cat(m3, "\n", ifelse(m3 >= 5, paste(m3, "equal to normal.\n"), 
                              paste("Caution:", m3, "is less than normal\n")))
#> 10 2 4 8 11 6 5 
#>  10 equal to normal.
#>  Caution: 2 is less than normal
#>  Caution: 4 is less than normal
#>  8 equal to normal.
#>  11 equal to normal.
#>  6 equal to normal.
#>  5 equal to normal.


推荐阅读