Я пытаюсь определить, как передать дополнительные параметры параметру statistic
в функцию boot()
в R, используя ...
. При чтении ?boot
в нем указано, что «первый переданный аргумент всегда будет исходными данными. Второй будет вектором индексов, частот или весов, которые определяют образец бутстрапа .... Любые дополнительные аргументы могут быть переданы вstatistic
через...
аргумент Но я не знаю, как это будет на самом деле выглядит на практикеКак передать дополнительные параметры через ... в статистический параметр в boot()
Вот пример кода -... statFun
это функция, которая принимает в некоторых данных и возвращает среднее значение Если дополнительный параметры передаются через команду ...
, она центрирует данные вокруг этих дополнительных параметров, а затем retu RNS о среднем:
statFun <- function(funData, indices, ...)
{
# Check to see if extra parameters
extraPar <- list(...)
if(extraPar[[1]])
{
result <- mean(funData[indices] - extraPar[[2]])
}else
{
result <- mean(funData[indices])
}
# Return the value
return(result)
}
# Testing statFun
testData <- 1:20 ; testIndices <- length(testData)
statFun(testData, testIndices, FALSE) # Returns 10.5
statFun(testData, testIndices, TRUE, mean(testData)) # Returns 0
Теперь, если я пытаюсь применить эту функцию в boot
, я бегу в проблемы:
boot(testData, statFun, R = 100)
, который дает мне Error in extraPar[[1]] : subscript out of bounds
. Если я попробую передать FALSE
в statFun
, но все равно получаю ту же ошибку. Я могу понять, как мое определение неточно, но как я могу это преодолеть? Я прочитал this и this пост, чтобы понять, как использовать ...
немного лучше, но я, кажется, что-то со всей очевидностью не хватает ...
Это мой первый пост SO, поэтому, пожалуйста, дайте мне знать, если мой вопрос Безразлично Не следуйте рекомендациям. Спасибо за любую помощь.
Я получаю результаты 20 и 9.5 (что я ожидаю). –
Я думаю, что справка означает, что вы можете передавать несколько аргументов через '...', но чтобы это сделать и чтобы их можно было передать, вы должны, вероятно, назвать их: поэтому используйте функцию statFun <- function (funData, indexs , center = FALSE, val = NULL) {'и соответственно изменить остальную часть вашей функции. Затем вы вызываете boot с помощью 'boot (testData, statFun, center = TRUE, val = mean (testData), R = 100)' – user20650
на самом деле помощь для '...' argumnet говорит * «Другие ** именованные аргументы * * для статистики, которые передаются без изменений каждый раз, когда она вызывается * »(выделение мое) – user20650