RNotebook의 테이블에 일본어가 있을 때의 문제에 대해서

2429 단어 RRStudioRMarkdown

키워드



RNotebook, R Notebook, Windows
RMarkdown, R Markdown,
paged.print=FALSE,
jsonlite::toJSON,
jsonlite:::C_escape_chars
rmarkdown:::paged_table_html,
base::format

내용



RNotebook에서 data.frame을 표시 할 때 일부 일본어가 포함되어 있으면 문제가 발생할 수 있습니다.
예를 들어, "가능"이라는 셀이 있으면 테이블이 표시되지 않습니다. 그 테이블뿐만 아니라 이후의 청크의 테이블도 표시되지 않습니다.



자세한 원인은 알 수 없지만,
rmarkdown 패키지 내에서 테이블을 표시하는 html을 작성하는 함수에 단점이 있습니다.
jsonlite 패키지의 toJSON 함수가 사용되고 있지만 그 내부에서 사용되는 jsonlite::C_escape_chars 함수에서는 일부 일본어의 이스케이프가 잘 작동하지 않는 것 같습니다.
"가능"이라는 문자
"\"가능\""으로 변환할 수 있으면 좋은 것 같지만,
"\"가능\\\"으로 변환되었습니다.

jsonlite:::C_escape_chars 함수의 경우 iconv를 사용하여 돌파 할 수 있습니다.


그러나 rmarkdown 패키지 측의 단점으로 인해 data.frame의 문자열에 iconv를 곱해도 테이블이 표시되지 않는 문제는 해결할 수 없습니다.
rmarkdown:::paged_table_html이라는 내부 함수에서,
data.frame의 모든 열에 base::format 함수를 적용하고 있어 이때 iconv를 걸면 utf8화가 리셋되어 버리고 있다.

assignInNamespace 함수를 사용하여 paged_table_html 함수를 다시 작성하려고 시도했지만,
어떻게 작동하지 않았기 때문에이 시도는 보류 중입니다.


타협 대처법



RNotebook에서는 표시되는 테이블은, 행이 너무 많을 경우에 표시수를 소분으로 하는 기능이 붙어 있지만, 이 기능을 오프로 하면, 상기의 일본어를 표시할 수 없는 경우에서도 표시할 수 있는 것 같다(이번에 예에서 시도한 한).


이 기능을 끄려면 청크에 옵션으로 paged.print = FALSE를 추가하십시오.
테이블의 표시는 일반 RStudio 콘솔과 유사합니다.


예제의 "가능"도 표시 할 수있었습니다.

좋은 웹페이지 즐겨찾기