2015-05-12 60 views
0

我有默認參數的函數剛剛返回它的參數作爲一個列表:獲取運行時值

x <- function(a=1, b=2, c=3){formals()} 

和另一個函數,它是一個簡單的包裝圍繞x

y <- function(a, ...) x(a, ...) 

但是,在函數x中,我想獲取參數的運行時值,而不是默認值。這樣,

y(a=3, b=4) 

應該返回

$a 
[1] 3 

$b 
[1] 4 

$c 
[1] 3 

,而不是

$a 
[1] 1 

$b 
[1] 2 

$c 
[1] 3 

這是我現在得到。也許有一個sys。*函數可能會有所幫助,但我對這些經驗並不那麼...有沒有一種簡單的方法來調用函數,如formals()來獲取調用者指定參數的值?

+0

我不明白。在'x'中,你在函數中,所以你可以訪問參數:'x < - 函數(a = 1,b = 2,c = 3)列表(a = a,b = b,c = c) ' –

+0

參數列表在實際情況下非常長,所以我不想在參數列表和函數體中指定它們全部... – gkcn

回答

0

也許這樣?

x <- function(a=1, b=2, c=3) mget(names(formals())) 
y <- function(a, ...) x(a, ...) 

y(a=3, b=4) 
#$a 
#[1] 3 
# 
#$b 
#[1] 4 
# 
#$c 
#[1] 3 
+0

似乎合理:) – gkcn

+0

@gkcn如果這回答您的問題,那麼你應該接受和/或upvote它。 –