Назначение объектов аргументам в функциях R — переключатели, операторы или функции if else?

#r

Вопрос:

Я новичок в R и программировании в целом и пытаюсь написать очень простую функцию, в которой вводятся 2 числа и выбор из одной из 3 операций. Предполагается, что вывод будет результатом дальнейшего вычисления (разделите результат ввода на 3*pi), а затем строкой символов, чтобы подтвердить, какая операция была выбрана/выполнена. Я хочу, чтобы операция по умолчанию была сложением.

Я немного прочитал о функции переключения и операторах типа if… else, но не уверен, что это наиболее эффективный способ достижения того, что я пытаюсь сделать, и до сих пор мне все равно ничего не удалось заставить работать. Кажется, я получаю массивную матрицу в качестве вывода или ошибку, указывающую, что я не могу вернуть несколько аргументов в своей текущей попытке. Может ли кто-нибудь помочь с тем, где я иду не так? Заранее спасибо.

  basiccalc lt;- function(x, y, operation = addition){  addition lt;- x   y  subtraction lt;- x - y  multiplication lt;- x * y  calculation lt;- operation/(3*pi)  return(calculation, "operation") }   

Ответ №1:

switch было бы полезно

 basiccalc lt;- function(x, y, operation = addition) {  operation lt;- deparse(substitute(operation))  op lt;- switch(operation,  addition = x   y,  subtraction = x - y,  multiplication = x * y)  return(op/(3 *pi)) }  

-тестирование

 gt; basiccalc(3, 5) [1] 0.8488264 gt; 8/(3 * pi) [1] 0.8488264 gt; basiccalc(3, 5, operation = subtraction) [1] -0.2122066  gt; (3- 5)/(3 * pi) [1] -0.2122066