一个R函数来控制数字但不是非数字结果

时间:2017-03-10 23:02:17

标签: r function

背景

假设我有一个产生数字结果的上层函数(例如.0023528等)和非 - 数字结果(例如,"Not Possible""Result is Unacceptable"等。

问题:

我编写了一个小的低级函数来控制R中显示的小数位(称为decimal(see below))。

如果我的decimal()函数只能在我的上层函数的结果是数字时才能工作?否则让结果按原样出现(即作为一个字符)

## decimal display controller:

 decimal <- function(x, k) format(round(x, k), nsmall = k, scientific = 
ifelse(x >= 1e+05 || x <= -1e+05 || x <= 1e-05 & x >= -1e-05, T, F) )   

## Example of use:
 x = .000276573      ## HERE x is a numeric result, what if x = "Not possible"

 decimal(x, 7)

1 个答案:

答案 0 :(得分:1)

您可以检查typeof是否为x,如果是字符则返回它而不进行处理。

## decimal display controller:
decimal <- function(x, k){
    if(typeof(x) == "character"){
    return(x)
    }
    format(round(x, k), nsmall = k, scientific = 
        ifelse(x >= 1e+05 || x <= -1e+05 || x <= 1e-05 & x >= -1e-05, T, F) )
}

decimal("sam", 7)
#[1] "sam"
decimal(.3, 7)
#[1] "0.3000000"

同时查看

?is.character
?is.numeric