2012-03-12 17 views
5

行列のリストを作成しましたが、今ではすべての行列の行の最大値を取得したいのですが、どうすれば得ることができますか?ここでリスト内のすべての行列の最大値を取得

は、リストのためのコードは次のとおりです。

i <- 1 
tryList <- list() 
treeList <- list() 
accList <- list() 

for(t_mtry in 1:40){ 
    for(t_ntree in 20:300{ 
    rf <- randomForest(class ~., data=training, mtry=t_mtry, ntree=t_ntree) 
    tbl <- table(predicted = predict(rf,evalSet,type="class"),actual=evalSet$class) 

    #get the accuracy of the classification as a list 
    retVal <- accuracy(tbl) 

    tryList <- c(tryList,t_mtry) 
    treeList <- c(treeList,t_ntree) 
    accList <- c(accList,mean(retVal)) 
    } 
    matrixList[[i]] <- matrix(c(tryList,treeList,accList),length(accList) 
    i <- i + 1 
    tryList <- list() 
    treeList <- list() 
    accList <- list() 
} 

は今、私はすべてのマトリックスからaccListの最大値にしたいです。私は1つのマトリックスを持っている場合 私が使用します。

lapply(matrix,max) 
max(unlist(matrix[,3])) 

しかし、私は、リストでそれをどのように使うことができますか?

+0

。 'matrix'をlapplyすると、すべての要素を評価します。再現可能な例を提供できますか?(これは実行されません。閉じかっこが2つあり、ライブラリ(randomForest)が宣言されていません)? –

答えて

7

あなたの質問はここでとにかく便利な何か、少し不明確である:私はあなたの用語は、ここで少しオフかもしれないと思う

m1 <- cbind(c(1,2,3),c(7,2,4)) 
m2 <- cbind(c(-1,19,13),c(21,3,5),c(3,3,0),c(4,5,6)) 
m3 <- cbind(c(1,2,3,4,5),c(8,18,4,6,7)) 

mylist <- list(M1=m1,M2=m2,M3=m3) 

# get the maximum value for each matrix 
lapply(mylist,FUN=max) 

# get the global maximum 
max(unlist(lapply(mylist,FUN=max))) 

# get the maximum value for each row of each matrix 
lapply(mylist,FUN=function(x)apply(x,MARGIN=1,FUN=max)) 


##### OUTPUT ##### 
> lapply(mylist,FUN=max) 
$M1 
[1] 7 
$M2 
[1] 21 
$M3 
[1] 18 

> max(unlist(lapply(mylist,FUN=max))) 
[1] 21 

> lapply(mylist,FUN=function(x)apply(x,MARGIN=1,FUN=max)) 
$M1 
[1] 7 2 4 
$M2 
[1] 21 19 13 
$M3 
[1] 8 18 4 6 7 
+0

行列にNA値が含まれている場合の最大値の取得方法は?私はあなたの与えられた解を試しました: 'max(unlist(lapply(mylist、FUN = max)))'が出力にNAを表示しています。 'max(unlist(lapply(na.omit(mylist)、FUN = max)))'も試みました。親切にお寄せくださいませんか? – joarderm

+1

'max()'パラメータ 'na.rm'を' lapply'に追加するだけです。 : 'lapply(mylist、FUN = max、na.rm = T)' – digEmAll

関連する問題