【发布时间】:2017-10-31 09:09:50
【问题描述】:
我编写了一个函数,它可以处理从 1 到 702 的整数,以非常具体的方式将数字转换为字母。以下是我希望刻字功能如何工作的一些示例:
- 1 -> A,
- 2 -> B,
- 27 -> AA,
- 29 -> 交流,
- 等等。
我们使用此功能为报告中的附录“编号”/“字母”。我希望使它更通用,以便它可以处理任何大小的正整数。如果我可以轻松地将原始数字转换为基数 26,这会更容易,但我没有看到在 R 中实现这一点的简单方法。
appendix_lettering <- function(number) {
if (number %in% 1:26) {
return(LETTERS[[number]])
} else if (number %in% 27:702) {
first_digit <- (floor((number - 1) / 26))
second_digit <- ((number - 1) %% 26) + 1
first_letter <- LETTERS[[first_digit]]
second_letter <- LETTERS[[second_digit]]
return(paste0(first_letter, second_letter))
}
}
有没有人建议我如何最容易地改进这个函数来处理任何正整数(或至少更多)?
【问题讨论】:
-
副本中接受的答案是有界的,但其他答案扩展到任何正整数。