Как найти переменные, необходимые для создания функции в R?

#r #function #arguments #rstudio

#r #функция #аргументы #rstudio

Вопрос:

Я использую R и RStudio. Часто я пишу код, а затем понимаю, что хотел бы, чтобы этот код был функцией. Вот очень упрощенная иллюстрация:

Код, который я мог бы написать (не лучший пример, но служит цели):

 aSqr <- a * a
bCub <- b^3
c4th <- c^4
result <- aSqr   bCub   c4th
  

Затем я решаю поместить это в функцию, которая требует определения того, что a, b и c должны быть аргументами функции, но не aSqr, bCub и c4th. Есть ли способ выделить код в RStudio и определить переменные, которые необходимо будет передать в качестве аргументов? В этом примере аргументы очевидны. В коде, который я на самом деле пишу, это не так очевидно.

Итак, я бы в итоге получил функцию, подобную:

 myFunction <- function(a, b, c){
    aSqr <- a * a
    bCub <- b^3
    c4th <- c^4
    return(aSqr   bCub   c4th)
}
  

Комментарии:

1. Из описания не ясно. Если вы хотите получить уже созданные объекты, используйте ls с pattern , т.е. ls(pattern = '^a|b|c$')

2. @akrun Я думаю, вопрос в том, можете ли вы заставить RStudio распознавать аргументы, необходимые для пользовательской функции, на основе уже существующего кода.

3. В RStudio есть ярлык для этого. Выделите код, нажмите Ctrl Alt X.

Ответ №1:

Расширяя комментарий Стефана некоторыми изображениями того, как это выглядит:

Шаг 1. Напишите свой код.

 aSqr <- a * a
bCub <- b^3
c4th <- c^4
result <- aSqr   bCub   c4th
  

Шаг 2. Выделите, какой должна быть ваша функция, и нажмите Ctrl Alt X (Windows) или Cmd Option X (Max). В качестве альтернативы, перейдите в меню Code > Извлечь функцию. Дайте ей имя.

Извлечь функцию

Шаг 3. У вас есть функция!

 myFunction <- function(a, b, c) {
  aSqr <- a * a
  bCub <- b^3
  c4th <- c^4
  result <- aSqr   bCub   c4th
}
  

В вашем случае вы, вероятно, захотите добавить return(result) после последней строки, чтобы ваша функция возвращала значение, которое вы можете присвоить.