#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)
после последней строки, чтобы ваша функция возвращала значение, которое вы можете присвоить.