...
オブジェクト andを使用して引数を渡す実用的な例を次に示します*apply
。滑らかで、これは使用法を説明する簡単な例のように思えました。覚えておくべき重要な点は...
、その関数へのすべての呼び出しには名前付き引数が必要であるため、引数を定義するときです。(そのため、R は、何をどこに置こうとしているのかを理解します)。たとえば、呼び出すことはできましたがtimes <- fperform(longfunction, 10, noise = 5000)
、省略しnoise =
ているとエラーが発生しました。これは、パススルーされているためです。安全のために...
a を使用する場合は、すべての引数に名前を付けるのが私の個人的なスタイルです。...
への呼び出しで引数noise
が定義されていますが、最終的fperform(FUN = longfunction, ntimes = 10, noise = 5000)
にへの呼び出しで別の 2 つのレベルでは使用されていないことがわかります。diff <- rbind(c(x, runtime(FUN, ...)))
fun <- FUN(...)
# Made this to take up time
longfunction <- function(noise = 2500, ...) {
lapply(seq(noise), function(x) {
z <- noise * runif(x)
})
}
# Takes a function and clocks the runtime
runtime <- function(FUN, display = TRUE, ...) {
before <- Sys.time()
fun <- FUN(...)
after <- Sys.time()
if (isTRUE(display)) {
print(after-before)
}
else {
after-before
}
}
# Vectorizes runtime() to allow for multiple tests
fperform <- function(FUN, ntimes = 10, ...) {
out <- sapply(seq(ntimes), function(x) {
diff <- rbind(c(x, runtime(FUN, ...)))
})
}
times <- fperform(FUN = longfunction, ntimes = 10, noise = 5000)
avgtime <- mean(times[2,])
print(paste("Average Time difference of ", avgtime, " secs", sep=""))