Получение числителя и знаменателя дроби в R

Используя функцию fractions в библиотеке MASS, я могу преобразовать десятичную дробь в дробь:

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

Но как тогда извлечь числитель и знаменатель? В справке для fractions упоминается атрибут "fracs", но я не могу получить к нему доступ.


person Bonnie Scott    schedule 11.02.2013    source источник


Ответы (2)


Символьное представление дроби хранится в атрибуте:

x <- fractions(0.175)
> strsplit(attr(x,"fracs"),"/")
[[1]]
[1] "7"  "40"
person joran    schedule 11.02.2013
comment
@BonnieScott Что ж, как продемонстрировал Джуба, довольно легко написать собственную функцию, с помощью которой можно их вытащить. - person joran; 12.02.2013

Вы можете получить атрибут 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
person juba    schedule 11.02.2013