我有一个模型列表,并希望返回其系数的数组(不是列表)。 (好奇的是,我在一堆不同神经元的数据上运行一个模型。我想要一个数组,即系数X神经元。)如果所有模型都成功运行,以下工作正常:
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
有更好的解决方案吗?
谢谢!
拉里
答案 0 :(得分:2)
还是有点笨拙:
sapply(ModelList, function(x) ifelse(is.null(coef(x)), NA, coef(x))