!!!有報分析で苦労した話 単純に注記の文章などを分析すると、EDINETコードの他に注記のフィールドがデータ化され、その中には文字列と表や図が入ってくるので、データをリスト形式にしたほうが「一括」して扱いやすいというメリットがある。 しかし、これを分析しようとすると、テキスト部分と表の部分と図の部分とに「分割」したほうが扱いやすい。 表は図はで何とか拾うことが出来るので、そこを他のダミー文字列に置き換えた残りが、テキスト部分。 しかしこのテキストはリスト形式のままなので、文字列に変換しないと、あとあと扱いにくい。 とても苦労したので、それを残しておく。 !!!実験 !!テストデータ > Id = c('A001', "B002", "C003") > Txt = list(list("sing your way home", "at the close of the day"), list("Oh, say, can you see", "by the dawns early light"), list("ABCDEFG", "HIJKLMN", "OPQRSTU")) > (df = tibble(Id, Txt)) # A tibble: 3 x 2 Id Txt 1 A001 2 B002 3 C003 !!変換の方法 !文単位のベクトルに変換 > sapply(df$Txt, toString) [1] "sing your way home, at the close of the day" "Oh, say, can you see, by the dawns early light" [3] "ABCDEFG, HIJKLMN, OPQRSTU" !文単位のリストに変換 > sapply(df$Txt, unlist) [[1]] [1] "sing your way home" "at the close of the day" [[2]] [1] "Oh, say, can you see" "by the dawns early light" [[3]] [1] "ABCDEFG" "HIJKLMN" "OPQRSTU" !!列を変換する !文章単位で変換 > df %>% mutate(Txt = sapply(Txt, toString)) > df %>% mutate(Txt = sapply(Txt, toString)) # A tibble: 3 x 2 Id Txt 1 A001 sing your way home, at the close of the day 2 B002 Oh, say, can you see, by the dawns early light 3 C003 ABCDEFG, HIJKLMN, OPQRSTU !分単位でリストに変換 > df %>% mutate(Txt = sapply(Txt, unlist)) #str_cと同じ結果 # A tibble: 3 x 2 Id Txt 1 A001 2 B002 3 C003 !!旨く行かない方法 !理由がわからない > df %>% sapply(Txt, toString) get(as.character(FUN), mode = "function", envir = envir) でエラー: 変数 'Txt' (モード 'function')は見つかりません > df %>% sapply(Txt, unlist) get(as.character(FUN), mode = "function", envir = envir) でエラー: 変数 'Txt' (モード 'function')は見つかりません !おそらくTxt列の下部にあるlistが無名だから(その無名のリストにあるはずの名前を使って処理すべき) > df %>% map("Txt", toString) $Id NULL $Txt NULL > df %>% map("Txt", unlist) $Id NULL $Txt NULL > df %>% map("Txt", toString) $Id NULL $Txt NULL