5

Tables列名を使用し、行名を使用せずに呼び出される行列のリストがあるとします。

 Tables <- list(structure(c(0.810145949194718, 0.0792559803788517, 0.189854050805282, 
0.920744019621148), .Dim = c(2L, 2L), .Dimnames = list(NULL, 
    c("e", "prod"))), structure(c(0.949326264941026, 0.24010922539329, 
0.0506737350589744, 0.75989077460671), .Dim = c(2L, 2L), .Dimnames = list(
    NULL, c("prod", "e"))))

行名を列名と同じにしたい:

rownames(Tables[[1]])<- colnames(Tables[[1]])
rownames(Tables[[2]])<- colnames(Tables[[2]])

使用lapplyしてみましたが成功しませんでした

lapply(Tables, function(x) rownames(x) <- colnames(x))

forループを使ってなんとかできました

for(i in 1:length(Tables)){
  rownames(Tables[[i]])<- colnames(Tables[[i]])
}

Tables # Expected result
[[1]]
              e      prod
e    0.81014595 0.1898541
prod 0.07925598 0.9207440

[[2]]
          prod          e
prod 0.9493263 0.05067374
e    0.2401092 0.75989077

*applyそれにもかかわらず、ループを回避するためにベースの任意の関数または他の関数を使用してそれを行う方法を見つけたいのですがfor、このターゲットでは成功しません。これを読みましたが、これらのソリューションの使用方法がわかりません。なにか提案を??

4

4 に答える 4

5

別のオプション:

for (x in Tables) 
   data.table::setattr(x, "dimnames", list(colnames(x), colnames(x))) 


[[1]]
              e      prod
e    0.81014595 0.1898541
prod 0.07925598 0.9207440

[[2]]
          prod          e
prod 0.9493263 0.05067374
e    0.2401092 0.75989077
于 2013-10-01T19:18:52.890 に答える