簡體   English   中英

R 將數字/字符轉換為上標或下標

[英]R Transform number/character to be a superscript or subscript

我想在現有字符串上標一個數字(或字符,這無關緊要)。

這是我最初的 dataframe 的樣子:

testframe = as.data.frame(c("A34", "B21", "C64", "D83", "E92", "F24"))
testframe$V2 = c(1,3,2,2,3,NA)
colnames(testframe)[1] = "V1"

  V1 V2
1 A34  1
2 B21  3
3 C64  2
4 D83  2
5 E92  3
6 F24  NA

我現在想做的是使用 V2 作為一種“腳注”,所以任何上標或下標(哪個都無關緊要)。 當V2里面沒有entry的時候,那么我只想保持V1原樣。

我在看到這個答案時發現了一個類似的問題:

> paste0("H", "\u2081", "O")
[1] "H₁O"

這就是我想要的,但我的問題是它必須自動創建,因為我的真實 dataframe 中的行太多了。

我試圖添加一個額外的列“V3”來輸入上標和下標代碼:

testframe$V3 = c("u2081", "u2083", "u2082", "u2082", "u2083", NA)

   V1 V2    V3
1 A34  1 u2081
2 B21  3 u2083
3 C64  2 u2082
4 D83  2 u2082
5 E92  3 u2083
6 F24 NA  <NA>

但是當我嘗試paste(testframe$V1, testframe$V3, sep = "\")時,它給了我一個錯誤。 在這種情況下如何使用 \?

如果下標始終是數字 0 到 9,則可以索引到 Unicode 下標數字的向量中:

subscripts <- c(
  "\u2080",
  "\u2081",
  "\u2082",
  "\u2083",
  "\u2084",
  "\u2085",
  "\u2086",
  "\u2087",
  "\u2089"
)

testframe$V1 <- paste0(
  testframe$V1, 
  ifelse(
    is.na(testframe$V2), 
    "", 
    subscripts[testframe$V2 + 1]
  )
)

testframe
    V1 V2
1 A34₁  1
2 B21₃  3
3 C64₂  2
4 D83₂  2
5 E92₃  3
6  F24 NA

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM