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

问题描述 投票:2回答:1

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

  1. Subscripts in R when adding other text
  2. How to literally print superscripts in R not used in labels or legends?
  3. Using Subscripts and Superscripts in R console

Unicode subscript in R有一些有用的指针。我可以从此link中获得适当的代码,但它不允许我以编程方式为所需字符创建代码。

CODE

这是一个有效的甲烷燃烧方程式:

> 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

冗长的解决方法(概念验证):

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字符串的最后一位替换为我想要的:

> cat(sub(pattern = '2', replacement = '4', x = sub2))
₂

尝试创建Unicode字符串:

> paste('\208','4',sep = '')
[1] "\02084"

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

r unicode subscript
1个回答
0
投票

尝试一下

创建一个函数以返回unicode。注意:请勿进行错误检查

ss

cat(sprintf('CH%s + 2 O%s-> CO%s + 2 H%sO',ss(4),ss(2),ss(2),ss(2)))]] >

© www.soinside.com 2019 - 2024. All rights reserved.