« [R]二つのベクトルの要素の共通部分と和集合を得る | トップページ | [R]文字からCIDを得る »

2023年9月24日 (日)

[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]二つのベクトルの要素の共通部分と和集合を得る | トップページ | [R]文字からCIDを得る »

無料ブログはココログ

■■

■■■