Смещение кода в RStudio: создание иерархии кода

Я пишу R-скрипты в RStudio, и я часто использую code folding. Я обнаружил, что вы можете увидеть иерархию складывания, нажав cmd + shift + O. Это очень полезно.

# to my dear love ---------------------------------------------------------
2+2 
# yo man ====
x.2 = function (x) {x+2}

### I do love potatoes ####

Посмотрите результат, нажав cmd + shift + O.

введите описание изображения здесь

Я не понимаю, как это работает, потому что, когда я пишу код ниже, я могу создать подраздел без текста, но не тогда, когда в нем есть текст (используя # ====, но не # yo man ====).

# to my dear love ---------------------------------------------------------
2+2
# ==== 

# yo man ====

### I do love potatoes ####
x.2 = function (x) {x+2}
data = "here is some data"

Посмотрите результат, нажав cmd + shift + O. введите описание изображения здесь

Вы можете видеть, что под # to my dear love --------------------------------------------------------- все под сдвигом направо! Это круто!

  • Таким образом, возникает вопрос: как можно создать иерархию разделов, содержащих текст в ней?
  • Это особый пакет или Emac, который это делает? Как я могу создавать подразделы с текстом и видеть иерархию в поле cmd + shift + O?
  • Как я могу сместить секцию (перейти в более высокий раздел (например, раздел 2) в нижнюю часть (раздел 1), уменьшив визуальную иерархию в правом поле?

Ответ 1

Как и Крис отвечает подзаголовки внутри функций

RStudio Code Складывающая иерархия работает только в определениях функций и структур if-else. Например:

# Section 1 ----
a <- 1

testfunct1 <- function () {
# sect in function=====
  b <- 2
  c <- 3
}

# Section 2 #####
d <- 4

# Section 3 =======
e <- 5

testfunct2 <- function () {
  # sect in function 2 =====
  f <- 6
  testsubfunct2_1 <- function () {
  # sect in subfunction 2_1 -----
    if (a == 1) {
      # section in if ----
      g < 7
    } else {
      # section in else ----
      h = 8
    }
  } 
}

# Section 4 ####
j <- 9

Выводит этот план:

Снимок экрана схемы

Я не знаю, почему метки раздела if-else не выстраиваются в линию.