2017-02-13 77 views
1

我試圖確定如何在功能boot() R中傳遞額外的參數,該參數statistic,使用...。在讀取?boot時,它表示 「」第一個參數將始終是原始數據,第二個參數將是一個指數,頻率或權重矢量,用於定義引導程序示例....任何其他參數都可以傳遞給statistic通過...說法但我不知道這將如何實際看在實踐中如何通過......傳遞附加參數統計參數啓動()

下面是一些示例代碼 - 。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,但仍然會得到相同的錯誤。我可以理解我的範圍是不正確的,但我該如何克服這一點?我讀過thisthis後,以瞭解如何使用...好一點,但我似乎失去了一些東西昭然若揭......

這是我第一次SO職位,所以請讓我知道,如果我的問題沒有按不遵循指導原則。謝謝你的幫助。

+0

我得到的結果20和9.5(我期望)。 –

+0

我認爲這個幫助意味着你可以通過'...'傳遞多個參數,但要真正做到這一點,並傳遞給開機,你應該命名它們:所以使用'statFun < - function(funData,indices ,center = FALSE,val = NULL){',並相應地更改其餘的函數。然後你用'boot(testData,statFun,center = TRUE,val = mean(testData),R = 100)調用引導'' – user20650

+0

實際上'''argumnet的幫助說*「其他**命名參數* *(對於每次被調用時統計信息不變的*)(「我的重點」) – user20650

回答

1

感謝user20650和閱讀?boot例子多了幾分謹慎,我想通了,需要的是什麼 - 只是爲了確保內statFun我的參數命名和我提到這些名字在我的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) 
    } 

現在,當我將此套管內,並將名稱addParscenterMean,我得到了我所期望的:

boot(testData, statFun, R = 100, extraPar = TRUE, numCenter = mean(testData)) 
# Returns boot object of data centered around the mean. 

當然現在明白...更多。