

現在，変換したい名前（文字列）のリストと，その名前と1対1対応している対応表があります．  
具体的には，リストは

> [1]  
>  "あ" "か" "さ" "た" "な" "は"  
>  [2]  
>  "ま" "や" "ら" "わ" "い" "き"

のような感じで，対応表は

> ひらがな 漢字  
>  あ 亜  
>  い 医  
>  う 鵜  
>  え 絵  
>  お 御  
>  か 科 …

のようになっています．  
ここから，この対応表を用いて，リストにある名前を変換したいです．  
つまり，例で言うと

> [1]  
>  "亜" "科" "差" "多" "名" ”歯"  
>  [2]  
>  "間" "矢" "等" "和" "医" "気"

のようにリストの内容を対応表に従って一括で変換する事を目標としています．  
stringrパッケージなどを試してみたのですが上手くいかず…  
stringrで上手くいくならその方法を，もしstringr以外にふさわしいパッケージがあったらそれを使った方法をお願いしたいと思います．  
よろしくお願いします．


CC BY-SA 3.0
2017-08-30T09:21:56.360
37612
2019-09-30T09:01:40.510
23335
question
r
R言語で，対応表に従ってリストの内容を変更したい


以下は `match()` \+ `lapply()` で処理する方法です。なお、変換表にない組み合わせの場合は `NA` になります。

[code]

    trans <- data.frame(
      hiragana = c("あ", "い", "う", "え", "お", "か", "さ", "た", "な", "は",
                   "ま", "や", "ら", "わ", "い", "き"),
      kanji = c("亜", "医", "鵜", "絵", "御", "科", "差", "多", "名", "歯",
                "間", "矢", "等", "和", "医", "気")
    )
    
    src <- list(
      c("あ", "か", "さ", "た", "な", "は"),
      c("ま", "や", "ら", "わ", "い", "き")
    )
    
    lapply(src, function(x) {
      as.vector(trans$kanji[match(x, trans$hiragana)])
    })
    
    =>
    
    [[1]]
    [1] "亜" "科" "差" "多" "名" "歯"
    
    [[2]]
    [1] "間" "矢" "等" "和" "医" "気"
    
[/code]


CC BY-SA 3.0
2017-08-30T12:25:40.230
37617
2017-08-30T12:25:40.230
37612
answer