2013-02-11 32 views
6

庫MASS使用功能fractions,我可以一個十進制轉換爲一個分數:獲取分數的分子和分母中的R

> fractions(.375) 
    [1] 3/8 

但再怎麼我解壓的分子和分母? fractions的幫助提到了屬性「壓裂」,但我似乎無法訪問它。

回答

7

分數的字符表示被存儲在一個屬性:

x <- fractions(0.175) 
> strsplit(attr(x,"fracs"),"/") 
[[1]] 
[1] "7" "40" 
+0

@BonnieScott那麼,作爲朱巴證明,這是很容易編寫自己的函數來拉他們一把用。 – joran 2013-02-11 20:29:55

4

你可以從你的分數fracs屬性對象下面的方式,但它僅僅是你的分數的字符表示:

x <- fractions(.375) 
attr(x, "fracs") 
# [1] "3/8" 

如果您要訪問的分子和分母的值,你可以拆分與下面的函數的字符串:

getfracs <- function(frac) { 
    tmp <- strsplit(attr(frac,"fracs"), "/")[[1]] 
    list(numerator=as.numeric(tmp[1]),denominator=as.numeric(tmp[2])) 
} 

,你可以用這樣的方式:

fracs <- getfracs(x) 
fracs$numerator 
# [1] 3 
fracs$denominator 
# [1] 8