2015-10-08 5 views
0

Я пытаюсь создать пользовательскую функцию, которая имеет формулу, которая требует аргументов другой функции. Например, примерно так:R: Использование аргументов одной функции в качестве параметра для другого

funct1 <- function(x,y,z){ 
    x + y + z 
} 

funct2 <- function(funct1, multiplier) { 
    print("first arg is ": [funct1 x arg] 
    print("second arg is ": [funct1 y arg] 
    print("third arg is ": [funct1 z arg] 
} 

first <- funct1(1,2,3) 
funct2(first1, 2) 
#first arg is 1 
#second arg is 2 
#third arg is 3 

first <- funct1(3,4,5) #12 
funct2(first1, 2) 
#first arg is 3 
#second arg is 4 
#third arg is 5 
+0

вы планируете на изменение значений переменных в 'funct1()' или нет? Это принципиально меняет ответ. –

+0

Да, значения '' 'funct1''', как я планирую присвоить его различным объектам. Я пытаюсь сделать '' 'funct2''' динамически в зависимости от того, что передается с' '' funct1'''. Надеюсь это поможет! –

+0

Вы действительно должны были сделать это ясно, а затем @Honey не был бы приведен неверный путь. –

ответ

2

Если вы хотите, чтобы иметь возможность передать функции и аргументы в новую функцию без определения того, что эти аргументы, то вы можете использовать ...

f1 <- function(x, y, z){x + y + z} 
f2 <- function(x, y){x * y} 

doubler <- function(func, ...){ 
    func(...) * 2 
} 

f1(1, 2, 3) 
# 6 
doubler(f1, 1, 2, 3) 
# 12 
f2(3, 4) 
# 12 
doubler(f2, 3, 4) 
# 24 
1

Вам просто нужно иметь одну и ту же переменную в каждом. Какая же конечная игра для этого?

funct1 <- function(x,y,z){ 
    x + y + z 
} 

funct2 <- function(x,y,z) { 
    funct1(x,y,z) * 2 
} 

funct2(3,4,5) 

> 24 
+0

Правильно, я думаю, я должен указать, что я пытаюсь избежать необходимости вводить те же аргументы. Я могу просто назначить '' 'funct1''' объекту, а затем передать это в' '' funct2''' –

+1

'funct2 <- function() { funct1 (3,4,5) * 2 }' Будет работать, но я все еще не совсем уверен, почему вы это сделаете? Вы могли бы просто пойти 'funct1 (3,4,5) * 2' вы знаете? – Badger

Смежные вопросы