R中的函数将小数转换为具有指定分母的小数

时间:2017-08-01 09:34:39

标签: r decimal fractions

说我有一个小数列表

x <- c(0.55, 0.246, 0.767)

然后我希望将这些转换成十分之一以便我得到

6/10 2/10 8/10

我遇到过这个非常好用的。但是,我想知道是否有功能可以做到这一点?

frac.fun <- function(x, den){ 
  dec <- seq(0, den) / den 
  nams <- paste(seq(0, den), den, sep = "/") 
  sapply(x, function(y) nams[which.min(abs(y - dec))]) 
} 

frac.fun(x, 10) 
#[1] "6/10" "2/10" "8/10"

这与我遇到的其他堆栈溢出问题不同,因为我感兴趣的是我的所有小数都有一个共同点,并且有兴趣指定该分母是什么。

谢谢!

1 个答案:

答案 0 :(得分:2)

以防您需要使用上述功能的更简化版本

f = function(x, den) {paste0(round(x * den), "/", den)}
x <- c(0.55, 0.246, 0.767)
f(x, 10)

[1] "6/10" "2/10"  "8/10"