从 Excel 获取下标到 R

Getting subscripts from Excel into R

我刚开始学习 R,但我已经遇到了第一个问题。我想在图表中显示我的数据。我的数据在 Excel sheet 中转换为 .csv sheet。但我的数据中有一些化学公式,如 Fe2O3,并且 .csv 所有下标都消失了。那看起来不太好。有什么方法可以将原始 Excel 文件中的下标放入 R 中吗? 非常感谢您的帮助:)

编辑:我的数据包含在 x 轴上显示的 6 个化学式,它们都包含下标(即 Fe2O3、ZnCl2、CO2 等)和在 y 轴上显示的数值。该图是条形图。我不确定是否有办法将数字更改为 R 中的下标或在导入之前保留它们。

图表看起来像这样。但我想将数字作为下标:

我不知道有什么方法可以将格式从 excel 导入 CSV,然后再导入 R,除非您可以使用 unicode 制作这些下标。 UTF8 symbols for subscript letters

鉴于您的化学物质列表很短,调整化学名称以帮助 ggplot 用下标解释它们并不需要太多工作。如果要包含更多元素,您需要在数字周围加上括号,然后加上波浪号。然后我们还告诉 scale_x_discrete 到 "parse" 标签并将这些符号转换为格式。

set.seed(42)
chem_df <- tibble(
  Chemicals = 
    c("AgNO3", "Al2SiO5", "CO2", "Fe2O3", "FeSO4", "ZnCl2"),
  Chemicals_parsed = 
    c("AgNO[3]", "Al[2]~SiO[5]", "CO[2]", "Fe[2]~O[3]", "FeSO[4]", "ZnCl[2]"),
  Mean   = rnorm(6, 50, 30))

ggplot(chem_df, aes(x=Chemicals_parsed, Mean)) + geom_col() + 
  scale_x_discrete(name = "Chemicals",
                   labels=parse(text=chem_df$Chemicals_parsed))

为了添加@JonSpring 的出色答案,您可以编写一个函数,将 ""Al2SiO5" 之类的字符串转换为 "Al[2]~SiO[5]" 之类的字符串,这样您就不必手动制作所有转化次数:

library(stringr)

chem.form <- function(s){
  s <- str_replace_all(s,"([0-9]+)","[\1]~")
  if(endsWith(s,"~")) s <- substr(s,1,nchar(s) - 1)
  s
}

Chemicals <- c("AgNO3", "Al2SiO5", "CO2", "Fe2O3", "FeSO4", "ZnCl2")
Chemicals_parsed <- as.vector(sapply(Chemicals,chem.form))