首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将下标文本(以编程方式)打印到R控制台

将下标文本(以编程方式)打印到R控制台
EN

Stack Overflow用户
提问于 2020-04-02 15:37:16
回答 1查看 526关注 0票数 2

我使用R来平衡一些复杂的化学方程,并希望在代码运行时打印这些方程,包括控制台的下标。我看到了一些贴出的答案,其中大部分与情节有关,或者依赖于将另一个程序的下标粘贴到R脚本中:

  1. 添加其他文本时R中的下标
  2. 如何在R中逐字逐句地打印标签或传说中没有使用的上标?
  3. 在R控制台中使用下标和上标

Unicode下标(R)有一些有用的提示。我可以从这个链接获得适当的代码,但它不允许我以编程方式为我想要的字符创建代码。

下面是一个简单的甲烷燃烧方程:

代码语言:javascript
复制
> sub2 <- '\u2082' # hard-coding unicode for '2' as a subscript
> sub4 <- '\u2084' # hard-coding unicode for '4' as a subscript
> cat(sprintf('CH%s + 2 O%s --> CO%s + 2 H%sO', sub4, sub2, sub2, sub2))
CH₄ + 2 O₂ --> CO₂ + 2 H₂O

冗长的解决办法(概念的证明):

代码语言:javascript
复制
desired_subscript <- 3.375
subs <- c('\u2080', '\u2081', '\u2082', '\u2083', '\u2084',
          '\u2085', '\u2086', '\u2087', '\u2088', '\u2089')

charvec <- as.character(x = desired_subscript)
lapply(0:9, function(z){
  charvec <<- gsub(pattern = z, replacement = subs[z+1], x = charvec)
  return(NULL)
})

> cat(charvec)
₃.₃₇₅

以下是不起作用的地方:

将unicode字符串的最后一个数字替换为我想要的:

代码语言:javascript
复制
> cat(sub(pattern = '2', replacement = '4', x = sub2))
₂

试图创建unicode字符串:

代码语言:javascript
复制
> paste('\208','4',sep = '')
[1] "\02084"

我有多个方程要平衡,下标并不总是整数。是否有一种方法可以编程地获取我想要包含在控制台输出中的下标的unicode?

EN

回答 1

Stack Overflow用户

发布于 2020-04-03 20:37:19

尝尝这个

创建一个返回独角兽的函数。警告:没有错误检查

ss <-函数(X) {intToUtf8(0x2080 + x)}

cat(‘CH%s+2O%s-> CO%s +2H%sO’,ss(4),ss(2),ss(2),ss(2))

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60995368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档