R 如何通过传递其他参数。。。在boot()中添加统计参数
我正在尝试确定如何使用R 如何通过传递其他参数。。。在boot()中添加统计参数,r,parameter-passing,optional-arguments,R,Parameter Passing,Optional Arguments,我正在尝试确定如何使用…将附加参数传递到R中的函数boot()中的参数statistic。在阅读?boot时,它说 “传递的第一个参数始终是原始数据。第二个参数是定义引导样本的索引、频率或权重向量……任何进一步的参数都可以通过…参数传递给统计数据。但我不确定这在实践中会是什么样子 下面是一些示例代码--statFun是一个函数,它接收一些数据并返回平均值。如果通过…命令传递额外的参数,它将围绕这些额外参数集中数据,然后返回平均值: statFun <- function(funData,
…
将附加参数传递到R中的函数boot()
中的参数statistic
。在阅读?boot
时,它说
“传递的第一个参数始终是原始数据。第二个参数是定义引导样本的索引、频率或权重向量……任何进一步的参数都可以通过…
参数传递给统计数据。但我不确定这在实践中会是什么样子
下面是一些示例代码--statFun
是一个函数,它接收一些数据并返回平均值。如果通过…
命令传递额外的参数,它将围绕这些额外参数集中数据,然后返回平均值:
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
这使我在extraPar[[1]]中出现了错误:下标超出范围
。如果我尝试将FALSE
传递到statFun
中,但仍然会得到相同的错误。我可以理解我的作用域是如何不正确的,但我如何克服这一点?我已经阅读并发布了一些文章,以更好地理解如何使用。
,但我似乎遗漏了一些显而易见的东西
这是我的第一篇SO帖子,如果我的问题不符合指导原则,请告诉我。谢谢您的帮助。感谢并阅读?引导示例更仔细一点,我了解了需要什么——只是为了确保statFun
中的参数已命名,并且我在ca中引用了这些名称所有的boot
。简单的东西:
statFun <- function(funData, indices, addPars, centerMean)
{
# Check to see if extra parameters
if(addPars)
{
result <- mean(funData[indices] - centerMean)
}else
{
result <- mean(funData[indices])
}
# Return the value
return(result)
}
当然,现在可以了解更多了。我得到了结果20和9.5(我希望是这样)。我认为帮助意味着您可以通过..
传递多个参数,但要真正做到这一点,并传递到引导,您可能应该命名它们:因此使用statFun事实上,..
argumnet的帮助说明“统计数据的其他命名参数在每次调用它时都会保持不变(emphasis mine)是的--我刚刚开始处理它,并将我的statFun
更改为包含命名参数,而不是像您提到的那样通过…
使它们变得模棱两可。谢谢您的帮助,解决了这个问题。
statFun <- function(funData, indices, addPars, centerMean)
{
# Check to see if extra parameters
if(addPars)
{
result <- mean(funData[indices] - centerMean)
}else
{
result <- mean(funData[indices])
}
# Return the value
return(result)
}
boot(testData, statFun, R = 100, extraPar = TRUE, numCenter = mean(testData))
# Returns boot object of data centered around the mean.