[R]CIDから文字を得る
ここからファイルaj17-kanji.txtをダウンロードしてカレントディレクトリに置き、以下のコマンドを実行する。
> library(tidyverse)
> tbl <- read_delim("aj17-kanji.txt", delim = "\t", comment = "#", col_names = FALSE, progress = FALSE, show_col_types = FALSE)
> cid0 <- tbl[[1]]
> ucd0 <- tbl[[19]]
> idx <- which(nchar(ucd0) == 6)
> cid <- cid0[idx]
> ucd <- ucd0[idx]
> h1 <- as.integer(as.hexmode(substr(ucd, 3, 4)))
> h2 <- as.integer(as.hexmode(substr(ucd, 5, 6)))
> mx <- matrix(c(h1, h2), ncol = 2)
上記は処理を簡単にするため、Unicodeが16進数表記で「U+」を除く4桁の文字のみ取り出している。CIDを指定して、文字を取り出してみる。最後の例のとおり、文字が割り当てられていないCIDを指定すると、文字列の空欄が返る。
> idx <- which(cid == 2000) # CIDの2000が示す文字は「江」
> print(iconv(rawToChar(as.raw(mx[idx, ])), from = "unicodeFFFE"))
[1] "江"
> idx <- which(cid == 4000) # CIDの4000が示す文字は「輪」
> print(iconv(rawToChar(as.raw(mx[idx, ])), from = "unicodeFFFE"))
[1] "輪"
> idx <- which(cid == 99999) # CIDの99999が示す文字は存在しない
> print(iconv(rawToChar(as.raw(mx[idx, ])), from = "unicodeFFFE"))
[1] "
« [R]二つのベクトルの要素の共通部分と和集合を得る | トップページ | [R]文字からCIDを得る »
「R(文字と文字列)」カテゴリの記事
- [R]同じ文字列を繰り返した文字列を作成する(2026.02.02)
- [R]文字列が数値に変換できるかどうか判定する(2025.12.31)
- [R]文字列の長さを得る(2025.12.30)
- [R]空白を追加した指定の長さの文字列を得る(2025.12.26)
- [R]文字列型ベクトルの要素を連結して文字列を作る(2025.12.17)

コメント