2017-11-10 18 views
0
table1 <- matrix(c(51,43,22,92,28,21,68,22,9,12),ncol=2,byrow=TRUE) 
table2 <- matrix(c(31,72,55,94,24,21,6,22,9,12),ncol=2,byrow=TRUE) 
table3 <- matrix(c(55,7,22,33,21,111,64,221,92,10),ncol=2,byrow=TRUE) 

同じ構造の3つのテーブル。反復コードRテーブルを改善する

上記のすべての表に対して同じデータ操作を行いたいと思います。

rownames(table1) <- c("x", "y", "z", "v", "p") 
table1 <- table1[!rownames(table1) %in% c("z", "p"), ] 

上記の表の文字列に応じて、行の名前を変更して削除しました。

3つのテーブルすべてに対して上記のコードを繰り返しますが、この操作をすべてのテーブルに対して一度にどのように行うことができますか?

ありがとうございました

+0

ご存知の場合は、機能を追加することができます。 – amrrs

+0

Btwこれらの行に名前を付けるのは何ですか? – amrrs

答えて

0

Easier。 lapplyを使用して、関数を3回書く必要はありません。

table1 <- matrix(c(51,43,22,92,28,21,68,22,9,12),ncol=2,byrow=TRUE) 
table2 <- matrix(c(31,72,55,94,24,21,6,22,9,12),ncol=2,byrow=TRUE) 
table3 <- matrix(c(55,7,22,33,21,111,64,221,92,10),ncol=2,byrow=TRUE) 

#function 
tablemodification<-function(yourtable){ 
    rownames(yourtable) <- c("x", "y", "z", "v", "p") 
    yourtable <- yourtable[!rownames(yourtable) %in% c("z", "p"), ] 
} 

lapply(list(table1, table2, table3), tablemodification) 
0

再利用性機能付き!

table1 <- matrix(c(51,43,22,92,28,21,68,22,9,12),ncol=2,byrow=TRUE) 
table2 <- matrix(c(31,72,55,94,24,21,6,22,9,12),ncol=2,byrow=TRUE) 
table3 <- matrix(c(55,7,22,33,21,111,64,221,92,10),ncol=2,byrow=TRUE) 

do_this <- function(table) { 
    rownames(table) <- c("x", "y", "z", "v", "p") 
    return(table[!rownames(table) %in% c("z", "p"), ]) 
} 

table1 <- do_this(table1) 
table2 <- do_this(table2) 
table3 <- do_this(table3) 
    > 
    > table3 
     [,1] [,2] 
    x 55 7 
    y 22 33 
    v 64 221 
    >