<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Rstudio | JDW Blog</title><link>https://www.jdwblog.com/tags/rstudio/</link><atom:link href="https://www.jdwblog.com/tags/rstudio/index.xml" rel="self" type="application/rss+xml"/><description>Rstudio</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>ko-KR</language><lastBuildDate>Tue, 24 Oct 2023 00:00:00 +0000</lastBuildDate><image><url>https://www.jdwblog.com/media/icon_hu_c964a8c093305932.png</url><title>Rstudio</title><link>https://www.jdwblog.com/tags/rstudio/</link></image><item><title>코랩에서 Rstudio 사용하기 1. Rstudio-server 설치하기</title><link>https://www.jdwblog.com/post/rstudio-1-rstudio-server/</link><pubDate>Tue, 24 Oct 2023 00:00:00 +0000</pubDate><guid>https://www.jdwblog.com/post/rstudio-1-rstudio-server/</guid><description>&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://www.jdwblog.com/post/rstudio-1-rstudio-server/images/colab_logo_hu_9b39055ef7b22fab.webp 224w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://www.jdwblog.com/post/rstudio-1-rstudio-server/images/colab_logo_hu_9b39055ef7b22fab.webp"
width="224"
height="224"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt; 최근 &lt;U&gt;&lt;em&gt;나만의 딥러닝 워크스테이션 구성하기&lt;/em&gt;&lt;/U&gt; 프로젝트를 진행하면서 다방면으로 찾아보던 중 문득 &lt;strong&gt;Colab&lt;/strong&gt;을 통해 &lt;code&gt;Rstudio&lt;/code&gt;를 구동할 수 있지 않을까 싶었다. 그래서 찾아보니까 실제로 나와 같은 생각을 한 사람이 있었고, 직접 테스트를 진행해보니 성공적으로 Colab의 리소스로 &lt;code&gt;Rstudio&lt;/code&gt;를 오픈 시킬 수 있어서 이를 소개하고자 한다.&lt;/p&gt;
&lt;h1 id="google-colaboratory"&gt;Google Colaboratory&lt;/h1&gt;
&lt;p&gt;  &lt;strong&gt;
&lt;/strong&gt;(이하 코랩)은 구글에서 제공하는 데이터 사이언스와 머신러닝을 위한 클라우드 기반 &lt;code&gt;Python&lt;/code&gt; 개발 환경이다. 코랩의 장점은 여러가지 있지만 아무래도 &lt;strong&gt;무료&lt;/strong&gt;로 &lt;code&gt;Jupyter notebook&lt;/code&gt;을 사용할 수 있는 점을 꼽을 수 있겠다. 물론 free tier로 사용시에 리소스의 제한이 꽤나 엄격하지만 그래도 인터넷이 연결이 되고 &lt;code&gt;Python&lt;/code&gt;을 다룰줄만 안다면 장소에 구애받지 않고 어디서든 작업을 할 수 있는 부분에 있어서는 유용한 서비스다.&lt;/p&gt;
&lt;p&gt;  코랩은 기본적으로 &lt;strong&gt;Ubuntu&lt;/strong&gt; 기반의 가상머신에서 서버 리소스가 할당되어 사용되는 구조인듯 싶다. 코랩에서 사용되는 OS에 대한 기본 정보는 &lt;code&gt;Jupyter notebook&lt;/code&gt;의 매직 명령어를 활용하여 확인할 수 있다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;!cat /etc/*release
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;DISTRIB_ID=Ubuntu
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;DISTRIB_RELEASE=22.04
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;DISTRIB_CODENAME=jammy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;DISTRIB_DESCRIPTION=&amp;#34;Ubuntu 22.04.2 LTS&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PRETTY_NAME=&amp;#34;Ubuntu 22.04.2 LTS&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;NAME=&amp;#34;Ubuntu&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;VERSION_ID=&amp;#34;22.04&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;VERSION=&amp;#34;22.04.2 LTS (Jammy Jellyfish)&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;VERSION_CODENAME=jammy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ID=ubuntu
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ID_LIKE=debian
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;HOME_URL=&amp;#34;https://www.ubuntu.com/&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;SUPPORT_URL=&amp;#34;https://help.ubuntu.com/&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;BUG_REPORT_URL=&amp;#34;https://bugs.launchpad.net/ubuntu/&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;PRIVACY_POLICY_URL=&amp;#34;https://www.ubuntu.com/legal/terms-and-policies/privacy-policy&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;UBUNTU_CODENAME=jammy
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br&gt;
&lt;div class="callout flex px-4 py-3 mb-6 rounded-md border-l-4 bg-blue-100 dark:bg-blue-900 border-blue-500"
data-callout="note"
data-callout-metadata=""&gt;
&lt;span class="callout-icon pr-3 pt-1 text-blue-600 dark:text-blue-300"&gt;
&lt;svg height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"&gt;&lt;path fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="m16.862 4.487l1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8l.8-2.685a4.5 4.5 0 0 1 1.13-1.897zm0 0L19.5 7.125"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div class="callout-content dark:text-neutral-300"&gt;
&lt;div class="callout-title font-semibold mb-1"&gt;Note&lt;/div&gt;
&lt;div class="callout-body"&gt;&lt;p&gt;본격적으로 들어가기에 앞서 본 포스팅은 해당
를 활용하여 작성되었음을 알립니다.&lt;/p&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h1 id="rstudio-server-설치"&gt;Rstudio-server 설치&lt;/h1&gt;
&lt;p&gt;  기본적인 접근은 다음과 같다. 먼저 코랩 자체가 &lt;code&gt;Ubuntu&lt;/code&gt;환경에서 실행되는 만큼 리눅스 우분투용 R과 Rstudio를 설치한다. 일반적으로 Ubuntu 환경 하에서는 로컬 웹 기반 &lt;code&gt;Rstudio-server&lt;/code&gt;를 설치하여 활용하는데, 설치를 마치고 설치된 해당 주소와 포트를 터널링을 통해 접근하는 방식으로 진행된다. 각자 코랩을 켜서 아래의 &lt;strong&gt;code-chunk&lt;/strong&gt;를 복사하여 셀 바이 셀로 실행시켜 나가면 된다.&lt;/p&gt;
&lt;h2 id="1-rstudio-유저-추가"&gt;1. &lt;strong&gt;rstudio&lt;/strong&gt; 유저 추가&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;!sudo useradd --create-home --user-group --password &lt;span class="k"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;1234&amp;#39;&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; openssl passwd -1 -stdin&lt;span class="k"&gt;)&lt;/span&gt; rstudio
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;!usermod -aG sudo rstudio
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;!su rstudio -c &lt;span class="s1"&gt;&amp;#39;echo 1234 | sudo -S chmod -R 777 /var/log&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;  먼저 우분투 환경에서 &lt;strong&gt;&amp;ldquo;rstudio&amp;rdquo;&lt;/strong&gt; 사용자를 생성하고 &lt;code&gt;sudo&lt;/code&gt; 권한을 부여한다. 이는 &lt;code&gt;rstudio-server&lt;/code&gt; 로그인에 필요한 과정이다.
  마지막 세번째 줄에 있는 &lt;code&gt;!su rstudio -c 'echo 1234 | sudo -S chmod -R 777 /var/log'&lt;/code&gt;코드는 지금은 직접적인 연관이나 필요는 없지만 추후에 진행할 &lt;code&gt;tensorflow-R&lt;/code&gt;을 설치할때 필요로 하기 때문에 미리 처리를 해 놓음.&lt;/p&gt;
&lt;p&gt;  비밀번호의 경우 현재 &lt;em&gt;1234&lt;/em&gt;로 세팅을 해 놓았는데 혹시라도도 &lt;code&gt;rstudio-server&lt;/code&gt; 로그인 비밀번호를 바꾸고 싶다하면 코드에 있는 &lt;em&gt;1234&lt;/em&gt;를 원하시는 비밀번호로 적어서 실행시키면 된다.&lt;/p&gt;
&lt;h2 id="2-필수-프로그램-설치"&gt;2. 필수 프로그램 설치&lt;/h2&gt;
&lt;h3 id="gis-software"&gt;GIS software&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;%%capture &lt;span class="c1"&gt;# 출력 생략 &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;!apt-get update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;!apt-get install --yes git ssh python3-venv
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;!apt-get install r-base r-base-dev gdal-bin python-gdal python3-gdal libgdal-dev libproj-dev proj-data proj-bin libgeos-dev libudunits2-dev libv8-dev libprotobuf-dev libxml2 libjq-dev
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;!apt-get install qgis saga
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;R&lt;/code&gt; 설치와 더불어 &lt;code&gt;python3&lt;/code&gt; 가상환경 모듈 및 지리 정보 및 공간 데이터 시각화를 위한 연계 패키지들을 설치&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="github-cli"&gt;Github CLI&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;%%capture
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;!apt-key adv --keyserver keyserver.ubuntu.com --recv-key C99B11DEB97541F0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;!echo &lt;span class="p"&gt;|&lt;/span&gt; sudo apt-add-repository https://cli.github.com/packages
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;!apt update
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;!apt install gh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Github&lt;/code&gt; 사용을 위한 &lt;code&gt;Github CLI(명령줄 인터페이스)&lt;/code&gt; 패키지 설치&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="rstudio-server"&gt;rstudio server&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;%%capture
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;!apt-get install gdebi-core
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;!wget https://download2.rstudio.org/server/focal/amd64/rstudio-server-2023.09.1-494-amd64.deb
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;!sudo gdebi rstudio-server-2023.09.1-494-amd64.deb
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;rstudio-server&lt;/code&gt; 설치 진행&lt;/li&gt;
&lt;li&gt;업데이트 시 배포되는 &lt;code&gt;rstudio-server&lt;/code&gt; 버전이 바뀌므로 최신 버전으로 사용을 원한다면
에서 최신 버전의 코드로 바꿔서 실행&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="images/install-rstudio.png" alt="rstudio-server posit 다운로드" width="50%"/&gt;
&lt;center&gt;
&lt;p&gt;&lt;em&gt;&amp;lt;rstudio-server posit 다운로드 페이지&amp;gt;&lt;/em&gt;&lt;/p&gt;
&lt;/center&gt;
&lt;h3 id="ngrok-토큰-발급"&gt;ngrok 토큰 발급&lt;/h3&gt;
&lt;p&gt;  다음으로 진행해야 할 것으로 &lt;code&gt;ngork&lt;/code&gt; 서비스 관련 사항들이다. &lt;code&gt;ngork&lt;/code&gt;는 로컬의 개발환경을 인터넷으로 공개적으로 접근 가능하게 만들어주는 터널링(Tunneling) 서비스라고 한다. 주로 시스템 혹은 웹 개발시 테스트의 용도나 디버깅 작업을 수행하는데 사용되는 서비스인데 우리는 이것을 통해 코랩 내부의 &lt;code&gt;rstudio-server&lt;/code&gt; 로컬 주소 및 포트를 접근할 수 있는 주소를 만드는데 사용할 것.
다음에 사이트에서 ngork 가입 및 토큰을 발급을 진행하면 된다.&lt;/p&gt;
&lt;img src="images/ngork_auth.png" alt="ngork account 토큰 발급" width="50%"/&gt;
&lt;center&gt;
&lt;p&gt;&lt;em&gt;&amp;lt;ngork account 토큰 발급&amp;gt;&lt;/em&gt;&lt;/p&gt;
&lt;/center&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;getpass&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;getpass&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Don&amp;#39;t forget create your account of ngrok and get token from https://dashboard.ngrok.com/auth/your-authtoken&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;authtoken&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;getpass&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Input your Auth token&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;발급받은 토큰을 복사하여 아래의 코드 실행 시 생성된 입력 창에 입력&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;! wget -q -c -nc https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;! unzip -qq -n ngrok-stable-linux-amd64.zip
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;wget&lt;/code&gt;과 &lt;code&gt;unzip&lt;/code&gt; 명령을 통해 &lt;code&gt;ngrok&lt;/code&gt;을 다운로드하고 압축을 해제하여 코랩 환경에서 IP 터널링을 가능케 함&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="3-ngrok을-통한-rstudio-server-가동"&gt;3. ngrok을 통한 Rstudio server 가동&lt;/h2&gt;
&lt;p&gt;  마지막으로 앞서 설정한 &lt;code&gt;ngork&lt;/code&gt; 토큰을 통해 코랩 로컬에서 실행되어 있는 &lt;code&gt;rstudio-server&lt;/code&gt; 웹 서버를 공용 IP 주소로 터널링하여 접근을 진행한다. 아래의 코드를 실행시키면 나오는 주소가 바로 코랩으로 실행시킨 &lt;code&gt;rstudio-server&lt;/code&gt;의 웹 주소이므로 출력하여 나오는 주소로 접속.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Run ngrok&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;get_ipython&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;system_raw&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;./ngrok authtoken $authtoken &amp;amp;&amp;amp; ./ngrok http 8787 &amp;amp;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;!&lt;/span&gt; &lt;span class="n"&gt;sleep&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Get the address for Rstudio-server&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;requests&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;re&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;sub&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;http://localhost:4040/api/tunnels&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;str_ssh&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;tunnels&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;public_url&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;str_ssh&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;#&amp;gt; https://af9e-105-199-235-17.ngrok-free.app # 출력 예시
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src="images/ngork_visit.png" alt="ngrok을 통해 RStudio Server에 접속하는 화면" width="100%" /&gt;&lt;img src="images/rstudio-login.png" alt="RStudio Server 로그인 화면" width="100%" /&gt;&lt;/p&gt;
&lt;img src="images/rstudio-main.png" alt="" width="100%"/&gt;
&lt;center&gt;
&lt;p&gt;&lt;em&gt;&amp;lt;ngork tunneling 및 Rstudio-server login, main 페이지&amp;gt;&lt;/em&gt;&lt;/p&gt;
&lt;/center&gt;
&lt;p&gt;  출력으로 나온 &lt;code&gt;ngork&lt;/code&gt; 터널링 페이지에서 &lt;strong&gt;Visit Site&lt;/strong&gt;를 클릭하면 우리가 설정한 &lt;code&gt;rstudio-server&lt;/code&gt;의 로그인 화면을 볼 수 있고, 이 후에 앞서 설정한 로그인 입력정보&lt;code&gt;(ID : rstudio, PW : 1234)&lt;/code&gt;를 입력하게 되면 비로소 코랩에서 코랩의 리소스를 통한 &lt;code&gt;Rstudio&lt;/code&gt; 사용 가능하다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id="references"&gt;References&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
(Github repository)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;
(.ipynb)&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>[R] Rstudio의 테마를 변경해 사용하기(With rsthemes Package)</title><link>https://www.jdwblog.com/post/rsthemes/</link><pubDate>Sat, 24 Oct 2020 00:00:00 +0000</pubDate><guid>https://www.jdwblog.com/post/rsthemes/</guid><description>&lt;img src="https://media.giphy.com/media/Ai6o3zm3NwvOazPxkm/giphy.gif" alt="" width="100%"/&gt;
&lt;p&gt; 데이터분석 혹은 R프로그래밍을 진행할 때 가장 많이 보는것이 (아마도) 구글, 스택오버플로우, 그리고 Rstudio일 것입니다.대다수의 R 유저들은 사용하는 IDE로서 &lt;strong&gt;Rstudio&lt;/strong&gt; 를 선호하는데요. 저 역시도 Rstudio에서 제공하는 각종 편의기능에 익숙해져 vscode와 같은 다른 IDE로 쉽사리 넘어가지 못하는것 같습니다. 그러나 오랜시간 비슷한 화면만을 보다보면 제아무리 만족스럽던 것도 점차 지루해지기 쉽상입니다. 이럴때 약간의 변화만 주어도 한결 나은 코딩을 할 수 있을텐데요. 오늘은 Rstudio에서 제공하는 기본테마를 벗어나 새롭고 다양한 테마를 제공할 뿐만아니라 테마변경을 손쉽게 하는
패키지를 소개하고자 합니다.&lt;/p&gt;
&lt;h1 id="기본-테마-변경"&gt;기본 테마 변경&lt;/h1&gt;
&lt;p&gt; Rstudio를 처음 설치하면 4개의 패널로 나뉜 흰색의 기본 테마를 마주치게 됩니다. 기본 테마 역시 멋지지만 오랜시간 흰색의 배경을 응시하다보면 눈이 쉽사리 피로해지곤 하기때문에 많은 분들이 개발환경에 있어서 밝은것보다 어두운 테마를 더욱 선호하는것 같습니다. 먼저 기본적인 Rstudio의 테마의 변경은 상단의 Tools &amp;gt; Global Options &amp;gt; Appearence 탭을 통해 변경이 가능합니다.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://www.jdwblog.com/post/rsthemes/images/K-20201011-162316_hu_50af3171ef71179b.webp 320w, https://www.jdwblog.com/post/rsthemes/images/K-20201011-162316_hu_6fc5746b15c0f27c.webp 480w, https://www.jdwblog.com/post/rsthemes/images/K-20201011-162316_hu_36dd3c284eb690d7.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://www.jdwblog.com/post/rsthemes/images/K-20201011-162316_hu_50af3171ef71179b.webp"
width="760"
height="412"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://www.jdwblog.com/post/rsthemes/images/K-20201011-162354_hu_4ea584c6ebc7684e.webp 320w, https://www.jdwblog.com/post/rsthemes/images/K-20201011-162354_hu_589335c52b2aa293.webp 480w, https://www.jdwblog.com/post/rsthemes/images/K-20201011-162354_hu_9a46da250d36b985.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://www.jdwblog.com/post/rsthemes/images/K-20201011-162354_hu_4ea584c6ebc7684e.webp"
width="760"
height="412"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://www.jdwblog.com/post/rsthemes/images/K-20201011-162403_hu_f5853212abb63ba6.webp 320w, https://www.jdwblog.com/post/rsthemes/images/K-20201011-162403_hu_3c28e3e2d23832ae.webp 480w, https://www.jdwblog.com/post/rsthemes/images/K-20201011-162403_hu_18089b23d43439a2.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://www.jdwblog.com/post/rsthemes/images/K-20201011-162403_hu_f5853212abb63ba6.webp"
width="760"
height="412"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;center&gt;&lt;em&gt;기본 테마 변경 과정&lt;/em&gt;&lt;/center&gt;
&lt;h1 id="rsthemes-package"&gt;rsthemes package&lt;/h1&gt;
&lt;p&gt; 기본적으로 제공되는 테마가 불충분하다고 느껴지신다면 이 패키지가 도움이 될 수도 있습니다. 서두에서도 소개했다시피
패키지는 Rstudio에서 사용할 수 있는 90여가지의 추가적인 테마를 제공합니다.&lt;/p&gt;
&lt;h2 id="설치"&gt;설치&lt;/h2&gt;
&lt;p&gt; 
는 cran에 정식으로 등록되지 않은 패키지이기 때문에 개발자 깃헙 레포지터리에서 다운받을 수 있습니다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# install.packages(&amp;#34;devtools&amp;#34;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;devtools&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;install_github&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;gadenbuie/rsthemes&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt; 패키지를 다운받은 후, 추가 테마를 설치합니다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;rsthemes&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;install_rsthemes&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;  base16테마를 설치하는 옵션을 지정하면 더욱 많은 테마를 설치할 수 있습니다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;rsthemes&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;install_rsthemes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;include_base16&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="사용"&gt;사용&lt;/h2&gt;
&lt;p&gt; 패키지와 테마의 설치까지 마치셨다면
에서 제공하는 함수들을 통해 테마를 관리 할 수 있습니다.
 맨 먼저 설치된 테마의 목록들을 확인합니다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 설치된 테마의 목록 확인&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;rsthemes&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;list_rsthemes&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [1] &amp;#34;a11y-dark {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [2] &amp;#34;a11y-light {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [3] &amp;#34;base16 3024 {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [4] &amp;#34;base16 Apathy {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [5] &amp;#34;base16 Ashes {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [6] &amp;#34;base16 Atelier Cave {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [7] &amp;#34;base16 Atelier Dune {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [8] &amp;#34;base16 Atelier Estuary {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [9] &amp;#34;base16 Atelier Forest {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [10] &amp;#34;base16 Atelier Heath {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [11] &amp;#34;base16 Atelier Lakeside {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [12] &amp;#34;base16 Atelier Plateau {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [13] &amp;#34;base16 Atelier Savanna {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [14] &amp;#34;base16 Atelier Seaside {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [15] &amp;#34;base16 Atelier Sulphurpool {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [16] &amp;#34;base16 Bespin {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [17] &amp;#34;base16 Brewer {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [18] &amp;#34;base16 Bright {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [19] &amp;#34;base16 Chalk {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [20] &amp;#34;base16 Codeschool {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [21] &amp;#34;base16 Cupcake {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [22] &amp;#34;base16 Darktooth {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [23] &amp;#34;base16 Default Dark {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [24] &amp;#34;base16 Default Light {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [25] &amp;#34;base16 Dracula {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [26] &amp;#34;base16 Eighties {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [27] &amp;#34;base16 Embers {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [28] &amp;#34;base16 Flat {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [29] &amp;#34;base16 Google Dark {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [30] &amp;#34;base16 Google Light {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [31] &amp;#34;base16 Grayscale Dark {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [32] &amp;#34;base16 Grayscale Light {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [33] &amp;#34;base16 Green Screen {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [34] &amp;#34;base16 Gruvbox dark, hard {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [35] &amp;#34;base16 Gruvbox dark, medium {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [36] &amp;#34;base16 Gruvbox dark, pale {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [37] &amp;#34;base16 Gruvbox dark, soft {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [38] &amp;#34;base16 Gruvbox light, hard {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [39] &amp;#34;base16 Gruvbox light, medium {rsthemes}&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [40] &amp;#34;base16 Gruvbox light, soft {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [41] &amp;#34;base16 Harmonic16 Dark {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [42] &amp;#34;base16 Harmonic16 Light {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [43] &amp;#34;base16 Hopscotch {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [44] &amp;#34;base16 IR Black {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [45] &amp;#34;base16 Isotope {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [46] &amp;#34;base16 London Tube {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [47] &amp;#34;base16 Macintosh {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [48] &amp;#34;base16 Marrakesh {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [49] &amp;#34;base16 Materia {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [50] &amp;#34;base16 Mexico Light {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [51] &amp;#34;base16 Mocha {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [52] &amp;#34;base16 Monokai {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [53] &amp;#34;base16 Nord {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [54] &amp;#34;base16 Ocean {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [55] &amp;#34;base16 OceanicNext {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [56] &amp;#34;base16 OneDark {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [57] &amp;#34;base16 Paraiso {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [58] &amp;#34;base16 PhD {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [59] &amp;#34;base16 Pico {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [60] &amp;#34;base16 Pop {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [61] &amp;#34;base16 Railscasts {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [62] &amp;#34;base16 Rebecca {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [63] &amp;#34;base16 Seti UI {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [64] &amp;#34;base16 Shapeshifter {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [65] &amp;#34;base16 Solar Flare {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [66] &amp;#34;base16 Solarized Dark {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [67] &amp;#34;base16 Solarized Light {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [68] &amp;#34;base16 Spacemacs {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [69] &amp;#34;base16 Summerfruit Dark {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [70] &amp;#34;base16 Summerfruit Light {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [71] &amp;#34;base16 Tomorrow Night {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [72] &amp;#34;base16 Tomorrow {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [73] &amp;#34;base16 Twilight {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [74] &amp;#34;base16 Unikitty Dark {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [75] &amp;#34;base16 Unikitty Light {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [76] &amp;#34;base16 Woodland {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [77] &amp;#34;Fairyfloss {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [78] &amp;#34;Flat White {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [79] &amp;#34;GitHub {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [80] &amp;#34;Nord Polar Night Aurora {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [81] &amp;#34;Nord Snow Storm {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [82] &amp;#34;Oceanic Plus {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [83] &amp;#34;One Dark {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [84] &amp;#34;One Light {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [85] &amp;#34;Solarized Dark {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# [86] &amp;#34;Solarized Light {rsthemes}&amp;#34; &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt; 다음의 함수를 통해 설치된 테마들을 하나씩 적용 할 수 있습니다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 테마 적용하기 &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;rsthemes&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;try_rsthemes&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# light, dark, base16 themes를 선택적으로 적용하기 &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;rsthemes&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;try_rsthemes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;light&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt; &lt;code&gt;rstudioapi::applyTheme()&lt;/code&gt;를 사용하면 목록의 테마를 하나씩 적용할 수 있습니다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 특정 테마 적용하기 &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;rstudioapi&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;applyTheme&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;One Dark {rsthemes}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="손-쉽게-테마-변경하기"&gt;손 쉽게 테마 변경하기&lt;/h2&gt;
&lt;p&gt; 
패키지가 가진 가장 큰 강점이 여기에 있습니다. 기호에 맞는 테마를 저장하고, 이를 단축키로 등록시켜 손 쉽게 테마를 전환시킬 수 있는 기능을 지원하는데요. 이 기능을 사용하기 위해선 먼저 자신이 선호하는 테마를 등록해야 합니다.&lt;/p&gt;
&lt;h3 id="주-야간-테마"&gt;주-야간 테마&lt;/h3&gt;
&lt;p&gt; &lt;code&gt;rsthemes::set_theme_light()&lt;/code&gt;, &lt;code&gt;rsthemes::set_theme_dark()&lt;/code&gt;함수는 각각 밝은 테마, 어두운 테마 하나씩을 지정할 수 있습니다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 현재 사용중인 테마를 주-야간 테마로 설정하기 &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;rsthemes&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;set_theme_light&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;rsthemes&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;set_theme_dark&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 특정 테마를 주-야간 테마로 등록하기 &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;rsthemes&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;set_theme_light&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;One Light {rsthemes}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;rsthemes&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;set_theme_dark&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;One Dark {rsthemes}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="즐겨찾는-테마"&gt;즐겨찾는 테마&lt;/h3&gt;
&lt;p&gt; &lt;code&gt;rsthemes::set_theme_favorite()&lt;/code&gt;함수를 통해 자신이 선호하는 테마 등록이 가능합니다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 현재 사용중인 테마를 선호테마목록에 추가 &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;rsthemes&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;set_theme_favorite&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 다수의 테마 선호테마목록에 추가 &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;rsthemes&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;set_theme_favorite&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;GitHub {rsthemes}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;One Light {rsthemes}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;One Dark {rsthemes}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="기본-세션에-등록"&gt;기본 세션에 등록&lt;/h3&gt;
&lt;p&gt; 위의 함수들을 통해 선호하는 테마를 지정하였습니다. 하지만 이 설정은 오직 현재 세션에만 저장이 되기 때문에 만약 Rstudio를 종료 후 다시 키거나 혹은 새로운 세션으로 접속하면 사라질 정보입니다. 때문에 기본 세션에 등록을 시켜야지만 지속적으로 사용이 가능합니다. &lt;code&gt;usethis::edit_r_profile()&lt;/code&gt;함수를 통해 &lt;code&gt;~/.Rprofile&lt;/code&gt;을 편집하여 등록한 테마를 모든 세션에서 사용 가능하도록 설정합니다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ~/.Rprofile&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;interactive&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;rsthemes&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;set_theme_light&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;GitHub {rsthemes}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;rsthemes&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;set_theme_dark&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Fairyfloss {rsthemes}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;rsthemes&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;set_theme_favorite&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;GitHub {rsthemes}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;&amp;#34;One Light {rsthemes}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;&amp;#34;One Dark {rsthemes}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="단축키-등록"&gt;단축키 등록&lt;/h3&gt;
&lt;p&gt; &lt;code&gt;~/.Rprofile&lt;/code&gt;파일에 테마를 등록하여 저장하면 세션이 종료되거나 바뀌어도 설정은 날아가지 않습니다. 이번엔 저장된 테마를 스위칭하는 단축키를 설정하는 방법에 대해 알아보겠습니다.
패키지는 세가지 addins 기능을 지원합니다. &lt;br&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Toggle Dark Mode&lt;/strong&gt; : 주-야간 테마&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Favorite Themes&lt;/strong&gt; : 즐겨찾는 테마&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Auto Dark Mode&lt;/strong&gt; : 주-야간 테마 지정된 시간에 자동 변경&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;  addins에 들어가있는 기능들은 기본적으로 Rstudio의 단축키로 설정이 가능합니다. 이 말인 즉슨 테마전환기능을 단축키로 지정해서 사용하는게 가능하다는 의미인데요. Rstudio의 단축키는 Tools &amp;gt; Modify Keyboard shortcuts에서 설정 할 수 있습니다.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://www.jdwblog.com/post/rsthemes/images/K-001-1_hu_fc124858bc3e29c9.webp 320w, https://www.jdwblog.com/post/rsthemes/images/K-001-1_hu_d2adfd2e5a33a14d.webp 480w, https://www.jdwblog.com/post/rsthemes/images/K-001-1_hu_746bd17ef4528c7.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://www.jdwblog.com/post/rsthemes/images/K-001-1_hu_fc124858bc3e29c9.webp"
width="760"
height="408"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://www.jdwblog.com/post/rsthemes/images/K-20201013-102841_hu_3048f4d74f422479.webp 320w, https://www.jdwblog.com/post/rsthemes/images/K-20201013-102841_hu_27c4a7257eb4a39e.webp 480w, https://www.jdwblog.com/post/rsthemes/images/K-20201013-102841_hu_2d11329c06505b1a.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://www.jdwblog.com/post/rsthemes/images/K-20201013-102841_hu_3048f4d74f422479.webp"
width="760"
height="408"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt; 검색란에 &amp;rsquo;toggle&amp;rsquo;만 타이핑해도 &amp;ldquo;Toggle Dark Mode&amp;quot;이 자동완성으로 등장합니다. 이곳에 원하는 단축키를 등록합니다. 저는 단축키로 &amp;ldquo;Ctrl+Alt+D&amp;quot;를 등록하였습니다.&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://www.jdwblog.com/post/rsthemes/images/K-20201013-104228_hu_22c549206313f280.webp 320w, https://www.jdwblog.com/post/rsthemes/images/K-20201013-104228_hu_d07c9dd6a189b300.webp 480w, https://www.jdwblog.com/post/rsthemes/images/K-20201013-104228_hu_a6eedec270e85fe0.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://www.jdwblog.com/post/rsthemes/images/K-20201013-104228_hu_22c549206313f280.webp"
width="760"
height="408"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;figure &gt;
&lt;div class="flex justify-center "&gt;
&lt;div class="w-full" &gt;
&lt;img alt=""
srcset="https://www.jdwblog.com/post/rsthemes/images/K-20201013-104815_hu_cad7b8028edc2908.webp 320w, https://www.jdwblog.com/post/rsthemes/images/K-20201013-104815_hu_21404a0a0dfe7ee3.webp 480w, https://www.jdwblog.com/post/rsthemes/images/K-20201013-104815_hu_e46318f6de0d8300.webp 760w"
sizes="(max-width: 480px) 100vw, (max-width: 768px) 90vw, (max-width: 1024px) 80vw, 760px"
src="https://www.jdwblog.com/post/rsthemes/images/K-20201013-104815_hu_cad7b8028edc2908.webp"
width="760"
height="408"
loading="lazy" data-zoomable /&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt; 이후 설정한 단축키를 누르면 주-야간테마로 전환되는 것을 확인할 수 있을 겁니다. 즐겨찾는 테마의 단축키 등록도 이와 동일한 방식으로 등록이 가능하므로 똑같은 방식이니 추가적인 설명은 생략하고 넘어가도록 하겠습니다. (단축키로 &amp;ldquo;Ctrl+Alt+N&amp;quot;을 추천합니다.)&lt;/p&gt;
&lt;p&gt; addins의 마지막 기능인 &lt;strong&gt;Auto Dark Mode&lt;/strong&gt;를 활성화하면 Rstudio가 정해진 시간에 맞춰서 주간테마, 야간테마를 자동으로 전환됩니다 직접 테마를 바꾸거나 단축키 등록을 하지 않더라도 이것만 설정하면 낮과 밤에 따라 테마를 변경시킬 수 있는데요. 이 기능은 단축키 등록이 아닌 아까 살펴봤던 &lt;code&gt;~/.Rprofile&lt;/code&gt;의 수정을 통해 가능합니다. 콘솔창에 다시 한번 &lt;code&gt;usethis::edit_r_profile()&lt;/code&gt;함수를 입력합니다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# ~/.Rprofile&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;interactive&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;rsthemes&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;set_theme_light&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;GitHub {rsthemes}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 주간 테마 &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;rsthemes&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;set_theme_dark&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;Fairyfloss {rsthemes}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 야간 테마 &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;rsthemes&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;set_theme_favorite&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="c1"&gt;# 즐겨찾는 테마 &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;GitHub {rsthemes}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;&amp;#34;One Light {rsthemes}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s"&gt;&amp;#34;One Dark {rsthemes}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="c1"&gt;# 주-야간 테마 지정된 시간에 자동 변경&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nf"&gt;setHook&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;rstudio.sessionInit&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kr"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;isNewSession&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;rsthemes&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="nf"&gt;use_theme_auto&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dark_start&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;as.POSIXct&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;17:00&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;%H:%M&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;dark_end&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;as.POSIXct&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;09:00&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="n"&gt;format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;%H:%M&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="n"&gt;action&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;append&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt; &lt;code&gt;~/.Rprofile&lt;/code&gt;에 &lt;em&gt;&amp;lsquo;주-야간 테마 지정된 시간에 자동 변경&amp;rsquo;&lt;/em&gt; 코드를 추가하였습니다. 만약 이와 같이 설정하면 17:00에 자동으로 야간테마로 전환되고, 다음날 09:00가 되면 주간 테마로 전환될 것입니다. 함수 내부에 &lt;code&gt;as.POSIXct()&lt;/code&gt;값을 조정하여 테마가 전환되는 시간을 조정할 수 있습니다.&lt;/p&gt;
&lt;hr&gt;
&lt;h1 id="참고자료"&gt;참고자료&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>