从 r 中条件句的输出中删除引号

remove quote from output of conditional sentence in r

我的数据有几个条件语句,我在报价中得到了所需的值。我想删除这句话,但我不能。

dd <- function(x){
if ( (x >= 15& x <= 19)) {print ("4")}
else if ( (x >= 20& x <= 29)) {print ("5")}
if ( (x >= 30& x <= 39)) {print ("6")}
else if ( (x >= 40& x <= 45)) {print ("7")}
if ( (x >= 46& x <= 50)) {print ("8")}
else if ( (x >= 51& x <= 55)) {print ("9")}
if ( (x >= 56& x <= 60)) {print ("10")}
else if ( (x >= 61& x <= 70)) {print ("11")}
}


>dd(55) 
[1] "9"

我想要的值是9,我想要这个不带引号的值,可以用这样的字母表示

> k
[1] 9 

我使用了这个代码,但失败了。

 print(dd(55), quote=FALSE)

所以,我需要帮助。提前致谢。

而不是使用多个 if/else,这可以用 findInterval

来完成
dd <- function(x) {
  tmp <- findInterval(x, c(15, 20, 30, 40, 46, 51, 56, 61)) + 3
  replace(tmp, tmp==11, NA)
 }

dd(55)
#[1] 9

它也适用于多个元素

dd(c(15, 36, 46, 60))
#[1]  4  6  8 10

在您的代码中,您使用了带有数字字符值的打印,因此您收到了引号。你也应该使用 return 而不是 print.

当然 cutfindInverval 是比下面更好的选择,我只是为了简单起见并继续您的方法。

它是如何工作的:由于每个条件都是互斥的,所以两个事情不可能在同一个实例中为真,R 中的 TRUE 值与它相乘时(TRUE)强制到 1,因此 1 乘以你的系数值。但是,只要情况不满足,该值就会计算为 FALSE,强制为零,乘以您的系数 returns 为零。按照这个逻辑,这应该适用于您的情况。

dd <- function(x){
  return((x >= 15 & x <= 19)*4+ (x >= 20 & x <= 29)*5+ (x >= 30 & x <= 39)*6+ (x >= 40 & x <= 45)*7+ (x >= 46 & x <= 50)*8+ (x >= 51 & x <= 55)*9+ (x >= 56 & x <= 60)*10+ (x >= 61 & x <= 70)*11)
}

输出:

> dd(17)
[1] 4
> dd(55)
[1] 9
>