2014-11-04 53 views
1

我的模型的列表,並希望返回其係數的陣列(不是列表)。 (對於好奇,我從一堆不同的神經元的運行數據的單一模式,我想一個數組,它是係數X的神經元。)如果所有車型成功運行以下工作正常:使用sapply(,,簡化= TRUE)

Coefs = sapply(ModelList, coef) 

但是如果其中一個模型失敗了,那麼coef()返回'NULL',這是與其他返回值不同的長度,我最終得到一個列表而不是一個數組。 :(

我的解決辦法是作品,是通用的,而且是可怕的笨拙:

Coefs = sapply(ModelList, coef) 
typical = Coefs[[1]]    # (ought to ensure that this is not NULL!) 
typical[1:length(typical)] = NA # Replace all coefficients with NA 
Bad = sapply(ModelList, is.null) # Find the bad entries 
for (i in which(Bad))   # For each 'NULL', (UGH! A LOOP!) 
    Coefs[[i]] = typical   # replace with a proper entry (of NAs) 
Coefs = simplify2array(Coefs) # Now I can convert it to an array 

有沒有更好的解決辦法

感謝

拉里

回答

1

仍然是一個!有點笨拙:

sapply(ModelList, function(x) ifelse(is.null(coef(x)), NA, coef(x))