R中的函数将小数转换为具有指定分母的分数
Function in R to convert a decimal to a fraction with a specified denominator
假设我有一个小数列表
x <- c(0.55, 0.246, 0.767)
然后我希望将这些转换成 10 的分数,这样我就可以得到
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"
这与我遇到的其他堆栈溢出问题不同,因为我对所有小数都有一个公分母感兴趣,并且有兴趣指定该分母是什么。
谢谢!
以防万一您需要使用上述函数的更简化版本
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"
假设我有一个小数列表
x <- c(0.55, 0.246, 0.767)
然后我希望将这些转换成 10 的分数,这样我就可以得到
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"
这与我遇到的其他堆栈溢出问题不同,因为我对所有小数都有一个公分母感兴趣,并且有兴趣指定该分母是什么。
谢谢!
以防万一您需要使用上述函数的更简化版本
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"