슬기로운 통계생활에는 옵시디언 사용자분들이 많이 계십니다. 예전에 찍어놨던 영상들 때문에 지속적으로 유입이 되고 있는데요, 오늘은 여러분에게 저만의 R과 함께 사용하는 옵시디언 활용법을 소개해드리도록 하겠습니다.

R 프로그래밍 언어의 장점

안타깝게도 많은 분들이 저의 최애 언어인 R을 잘 모르십니다. 그도 그럴것이, R은 여타 프로그래밍 언어들과는 달리 프로그래머를 위한 언어가 아닙니다. 통계학자가 만든, 프로그래머가 아닌 사람들을 위한 언어로 출발했기 때문에, 실제로 프로그래밍 언어를 사용하는 전공자들은 거의 사용하지 않는 언어입니다. 그러나 이러한 특징 때문에(?) 대다수 옵시디언을 사용하는 사용자들에게는 정말 많은 장점이 있는 언어라고 할 수 있습니다.

배우기 가장 쉬운 언어

R은 프로그래밍을 처음 배우는 사람들이 가장 배우기 쉬운 언어입니다. 파이썬이 쉽다고 하는 사람들이 있는데, 아마 대부분은 프로그래밍 전공자일 것이라 생각합니다. 이미 기존에 다른 프로그래밍 개념을 알고 있는 사람들에겐 파이썬이 쉽게 느껴지겠지만, R은 그냥 처음부터 비전공자를 위해 만든 언어입니다. 현재 세계에서 가장 영향력있는 교육사이트인 Coursera의 R과 파이썬을 비교하는 글에서도 R이 훨씬 (Significantly) 배우기 쉽다고 써있습니다.

image 20
프로그래머에게 파이썬이 더 쉬울 지 몰라도, R이 훨씬 쉽습니다.

동적 문서 (Dynamic document) 작성 기능이 미쳤음

옵시디언을 사용하는 여러분을 위한 글이니 잡소리는 집어치우고, 본론으로 들어가겠습니다. R에는 Quarto라는 프로그램이 있는데, Quarto는 마크다운 문서 안에 프로그래밍 코드를 돌려 결과물을 붙여 넣을 수 있게 해줍니다. 여기서 중요한 것은 프로그래밍 코드를 집어넣고, 돌릴 수 있다는게 아니라, 결과물을 집어넣을 수 있다는 것이 중요한 파트입니다.

옵시디언에서도 문서 안에 프로그래밍 언어를 넣고, 코드를 돌릴 수 있는 Execute Code 플러그인이 있죠. 그러나 이 플러그인은 프로그래밍 코드를 돌려볼 수 있는 것이지 결과를 옵시디언 문서에 넣을 수 는 없습니다. 문서 안에 프로그래밍 코드를 넣고, 그것의 결과값을 다시 문서 내용으로 넣는 동적 문서를 작성하면 정말 좋을텐데 말이죠.

R 커뮤니티는 이러한 동적문서 작성 도구를 어언 12년째 개발해오고 있습니다. 1, 2년이 아니고, 12년 입니다. 12년이면 여러분이 생각하는 모든 동적 문서 작성에 관련한 웬만한 기능은 다 있다고 보셔도 무방합니다.

동적 문서는 무엇이 좋은가?

사실 이게 가능해지면 무궁무진한 가능성이 펼쳐집니다.

  • 예 1: 자동으로 최신 데이터와 업데이트 되는 문서

예를 들어, 옵시디언으로 코로나 사망자 수에 관련한 지식을 정리해놨다고 합시다. 일반적인 마크다운의 경우엔 시간이 흐름과 동시에 매번 정기적으로 자료를 업데이트를 해줘야겠지만, 만약 코로나 사망자수 DB에 연동이 된 문서라면 어떨까요? 매번 자료를 업데이트를 할 필요가 없이 항상 최신 지식으로 유지가 될 것입니다.

  • 예 2: 데이터에 따라 자동으로 변하는 그래프들

혹은 내가 가진 엑셀 데이터를 분석해서 옵시디언에 그림파일로 붙여넣어놨는데, 안타깝게 데이터에 오타가 있다거나, 값이 추가된다면, 그래프를 다시 그리고, 일일히 다시 붙여넣어줘야 합니다. 하지만, 문서에 들어간 그래프들이 코드를 사용해 그린 그래프들이라면 어떨까요? 그래프들을 새로 그릴 필요없이 그냥 데이터가 바꿔주면 될 것 입니다.

문서 작성 결과가 미쳤음

여러분은 옵시디언으로 작성한 문서를 인쇄 할 때 어떻게 하시나요? 문서 설정 부분의 PDF로 내보내기를 통해 인쇄를 하고 계신가요?

obsidian print doc

아직도 이렇게 사용하시고 계시다면.. 그대는 구석기 시대에 살고 계신 것입니다. 먼저 여러분이 알고 계시면 좋은 프로그램은 Pandoc 이라는 프로그램입니다. 옵시디언 플러그인 중에도 Pandoc 플러그인 있어요, 한번 찾아보시기 바랍니다.

obsidian pandoc
옵시디언 Pandoc 프러그인이 존재하지만 버그가 많더군요.

Pandoc은 마크다운 문서를 여러가지 문서 형태로 바꿔주는 프로그램입니다. 마크다운을 사용해서 문서를 자주 작성하시는 분들은 무조건 알고 계셔야하는 프로그램입니다. 그리고 R의 Quarto는 이 Pandoc과 거의 자매품이라 할 수 있을 정도로 궁합이 좋은 동적 문서 작성 프로그램입니다.

뭔가 감이 오시나요? 옵시디언의 강력한 문서 연결 기능을 통해서 지식을 정리하고, 남들에게 공유하거나 문서에 동적기능을 부여하고 싶은 경우 (논문 작성, 데이터 분석 등) 에는 R의 Quarto를 사용하는 것이 가능하게 된 것입니다.

챗GPT가 열어준 새로운 문

요즘 인공지능에 대한 관심이 뜨겁습니다. 특히, 챗GPT에 대한 열기가 엄청 나죠. 챗GPT는 이름에서 알 수 있다시피 챗(chat)을 통해서, 즉, 문자를 통해 소통하는 인공지능입니다. 챗GPT가 나오기 전까지, 개인적으로 R이 잘하는 것 중 하나인 시각화나 대쉬보드 작성기능들이 GUI 기반의 솔루션들 (태블로 파워BI 등)에 밀려나지 않을까 하는 생각이 들었습니다. 그런데, 요즘엔 챗GPT에 원하는 그래프를 그냥 그려달라고 말한 후 R코드 복사해다가 붙여넣기만 하면 되니, GUI 기반 프로그램들에 대한 필요성이 전혀 없어졌습니다.

  • 챗GPT에 파이썬 코드만 돌릴 수 있지 않나요?
  • 챗GPT 쓰면 그냥 코드 돌리지 않아도 되는 것은 아닌가요?

라고 생각하시는 분들이 계실텐데, 다음과 같은 이유로 우리는 결국 코드를 가져다가 문서에 넣을수밖에 없습니다.

  • Quarto는 파이썬 코드도 돌릴 수 있습니다.
  • 챗GPT를 사용하면 동적 문서 작성을 할 수 없게 됩니다.

즉, 챗GPT의 발전으로 동적 문서 작성 도구로써 Quarto가 훨씬 매력적이 된 것이죠.

옵시디언과 R 연동

옵시디언과 R을 연동하기 위해서 여러분이 알아야 할 옵시디언 플러그인은 다음과 같습니다.

  • Custom File Extensions Plugin
  • Execute Code

Custom File Extensions Plugin 플러그인을 사용하면 내가 지정한 확장자를 옵시디언에서 편집할 수 있게 해줍니다. 플러그인을 설치하고 설정란에 Quarto 확장자인 qmd를 넣어주는 것이죠.

image 21

이렇게하면 옵시디언에서 Quarto 파일을 아래와 같이 불러올 수 있습니다.

image 22
옵시디언에서 편집 중인 Qmd 파일

중간에 두 개의 코드가 들어간 것이 보이시죠? 이 코드를 옵시디언에서 실행시킬 수 있도록 해주는 플러그인이 Excute code입니다. 플러그인을 설치하고, R 코드를 돌릴 수 있도록 R 스크립트 위치를 지정해주세요, 그리고 R 코드를 노트북 모드에서 실행할 수 있는 모드를 활성화 해줍니다.

rinobsidian
Excute code 플러그인 설정화면

위와 같은 설정을 하게 되면 다음과 같이 옵시디언 노트뷰 모드에서 코드를 돌릴 수 있게 됩니다. 각 코드 청크 아래쪽에 Run 버튼이 달리게 되죠!

codeexcuteobsidian
옵시디언 문서에 R코드 결과가 돌아간 화면

Quarto를 사용한 옵시디언 문서 출력

앞에서 말씀드린 Quarto를 사용해서 같은 옵시디언 문서를 출력해보겠습니다. RStudio에서 동일 Qmd 파일을 열면 바로 연동이 되어, 작성한 내용이 반영되어 열립니다. 이 파일을 렌더링을 해주면 아래 그림과 같은 문서를 얻게 됩니다.

qmdtopdf
qmd 파일을 html 형식으로 출력한 모습

또한, Quarto에는 다양한 템플릿을 만들 수 있고, 제가 만들어서 슬기로운 통계생활 멤버십 분들에게 제공하고 있는 슬기로운 통계생활 템플릿을 적용해서 PDF로 뽑으면 다음과 같은 결과물을 얻을 수 있습니다.

qmd 문서를 템플릿 적용해서 뽑은 결과

마치며

개인적으로 옵시디언과 R의 동적 문서 작성 기능이 너무나 궁합이 좋다는 생각입니다. 많은 분들이 알고 사용하셨으면 좋겠네요. 혹시나 더 좋은 방법이나 자신만의 꿀팁이 있다면 슬기로운 통계생활에 제보주세요! 그럼 다음에 더 유익한 꿀팁으로 찾아뵙겠습니다.

Similar Posts