簡體   English   中英

使用 dplyr 運行 function 時出現索引重疊錯誤

[英]Indexes overlap error when using dplyr to run a function

對於以下示例

n=68
    dat <- data.frame(group=rep(LETTERS[1:2], n/2),
                      x=rnorm(n, 0.1,0.1))

我正在嘗試按組運行 function (來自FitDoubleLogBeckgreenbrown ):

SNDVI0= dat %>%
  group_by(group) %>%
  dplyr::summarise(smoothNDVI= FitDoubleLogBeck(x, tout = F, weighting = T, 
                                                hessian = F, plot = F, ninit = 10)$predicted)

但我得到了這個錯誤

Error in `dplyr::summarise()`:
! Problem while computing `smoothNDVI = ...$predicted`.
i The error occurred in group 2: group = "B".
Caused by error in `rbind.zoo()`:
! indexes overlap

當我為每個組分別運行 function 時,它工作正常

dat0= subset(dat,group== "A" )
fit <- FitDoubleLogBeck(dat0$x, out = F, weighting = T, 
                         hessian = F, plot = F, ninit = 10)$predicted)
fit$predicted

如何使用 dplyr 通過 grup 運行 function? 原始數據有 6000 多組,每組有 52 個觀測值。

您可以嘗試將動物園 output 制作成這樣的列表:

dat %>%
  group_by(group) %>%
  dplyr::summarise(smoothNDVI= list(FitDoubleLogBeck(x, tout = F, weighting = T, 
                                                hessian = F, plot = F, ninit = 10)$predicted))

# # A tibble: 2 × 2
#   group smoothNDVI
#   <chr> <list>    
# 1 A     <zoo [1]> 
# 2 B     <zoo [1]> 

或者,將其變成一個小標題:

dat %>%
  group_by(group) %>%
  dplyr::summarise(smoothNDVI= as_tibble(FitDoubleLogBeck(x, tout = F, weighting = T, 
                                                hessian = F, plot = F, ninit = 10)$predicted))

# # A tibble: 2 × 2
#   group smoothNDVI$value
#   <chr>            <dbl>
# 1 A                0.124
# 2 B                0.125

我注意到 output 每次都不同,我不確定這是多么有意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM