当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R roman 罗马数字


R语言 roman 位于 utils 包(package)。

说明

将(一小组)整数简单地处理为罗马数字。

用法

as.roman(x)
.romans

r1 + r2
r1 <= r2
max(r1)
sum(r2)

参数

x

阿拉伯数字或罗马数字的数字或字符向量。

r1, r2

罗马数字向量,即 class "roman"

细节

as.roman 创建 "roman" 类的对象,这些对象在内部表示为整数,并具有合适的打印、格式化、子集、强制等方法,请参阅 methods(class = "roman")

算术("Arith"), 比较 ("Compare") 和 ("Logic"),即所有"Ops"群组操作与常规号码一样,通过R的整数函数。

只有 1 到 3899 之间的数字具有罗马数字的唯一表示形式,因此其他数字会导致 as.roman(NA)

.romans 是基本字典,一个名为character 的向量。

例子

## First five roman 'numbers'.
(y <- as.roman(1 : 5))
## Middle one.
y[3]
## Current year as a roman number.
(y <- as.roman(format(Sys.Date(), "%Y")))
## Today, and  10, 20, 30, and 100 years ago ...
y - 10*c(0:3,10)

## mixture of arabic and roman numbers :
as.roman(c(NA, 1:3, "", strrep("I", 1:6))) # + NA with a warning for "IIIIII"
cc <- c(NA, 1:3, strrep("I", 0:5))
(rc <- as.roman(cc)) # two NAs: 0 is not "roman"
(ic <- as.integer(rc)) # works automatically [without an explicit method]
rNA <- as.roman(NA)
## simple consistency checks -- arithmetic when result is in  {1,2,..,3899} :
stopifnot(identical(rc, as.roman(rc)), # as.roman(.) is "idempotent"
          identical(rc + rc + (3*rc), rc*5),
          identical(ic, c(NA, 1:3, NA, 1:5)),
          identical(as.integer(5*rc), 5L*ic),
          identical(as.numeric(rc), as.numeric(ic)),
          identical(rc[1], rNA),
          identical(as.roman(0), rNA),
          identical(as.roman(NA_character_), rNA),
          identical(as.list(rc), as.list(ic)))
## Non-Arithmetic 'Ops' :
stopifnot(exprs = {
        # Comparisons :
        identical(ic < 1:5, rc < 1:5)
        identical(ic < 1:5, rc < as.roman(1:5))
        # Logic  [integers |-> logical] :
        identical(rc & TRUE , ic & TRUE)
        identical(rc & FALSE, ic & FALSE)
        identical(rc | FALSE, ic | FALSE)
        identical(rc | NA   , ic | NA)
})
## 'Summary' group functions (and comparison):
(rc. <- rc[!is.na(rc)])
stopifnot(exprs = {
        identical(min(rc), as.roman(NA))
        identical(min(rc, na.rm=TRUE),
         as.roman(min(ic, na.rm=TRUE)))
        identical(range(rc.),
         as.roman(range(as.integer(rc.))))
        identical(sum (rc, na.rm=TRUE), as.roman("XXI"))
        identical(format(prod(rc, na.rm=TRUE)), "DCCXX")
        format(prod(rc.)) == "DCCXX"
})

参考

Wikipedia contributors (2006). Roman numerals. Wikipedia, The Free Encyclopedia. https://en.wikipedia.org/w/index.php?title=Roman_numerals&oldid=78252134. Accessed September 29, 2006.

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Roman Numerals。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。