我對dot-dot-dot參數的範圍有疑問。考慮以下function`foo =以下電話點點參數的範圍
x = runif(100, 0, 100);
y1 = foo(x, n = 5, style = 'quantile');
y2 = foo(x, style = 'equal');
但
foo <- function(x, ...){
require(classInt);
intvl = classIntervals(x, ...);
return(intvl);
}
功能的偉大工程,當我嘗試使用樣式=「固定」的說法,這需要一個fixedBreaks參數以及,我得到的eval
y3 = foo(x, style = 'fixed', fixedBreaks = seq(0, 100, 20))
錯誤(表達式,ENVIR,enclos): 的...列表中不包含2個元素
注意下面的作品完美
y5 = classIntervals(x, style = 'fixed', fixedBreaks = seq(0, 100, 20))
我suspsect,這已經是與作用域規則,但一直無法把我的手指上。任何對此的幫助將非常感激。
編輯。我修補了一個簡單的黑客工具。我認爲這是一個match.call問題,因爲style ='pretty'存在同樣的問題。快速查看代碼可以看出,這些是match.calls的兩種風格,很可能這是錯誤的根源。無論如何,這是我提出的黑客
foo2 <- function(x, ...){
require(classInt);
y = list(...); y$var = x;
intvl = do.call('classIntervals', y);
}
y6 = foo2(x, style = 'fixed', fixedBreaks = seq(0, 100, 20))
我覺得裏奇的回答我的問題闡明瞭爲什麼我前面的代碼沒有工作的一些情況。但是,我仍然不明白爲什麼這個。
看起來像'classIntervals'中的一個bug。作者正在嘗試使用'match.call' – hadley 2011-03-06 01:56:48
嗯。我應該給包裹的作者發電子郵件,看看他/她可能要說些什麼。感謝提示 – Ramnath 2011-03-06 02:07:58