answer ex_P2 - nibb-unix/gitc202402-unix GitHub Wiki

  1. セパレータはタブ(sep="\t")、ヘッダはなし(header=F)、1列目を行の名前として読み込む(row.names=1)。
> eco_rna <- read.table("ecoli.count_all", sep="\t", header=F, row.names=1)
  1. eco_rnaの各列を列方向にベクトルとして取り出してsum関数を適用する。
> eco_rna_readsum <- apply(eco_rna, 2, sum)
  1. eco_rnaを行方向のベクトルとみて、同じ要素数のベクトルeco_rna_readsumで割る。それを1,000,000倍する。その後、転置行列をとる。
> eco_rna_cpm0 <- apply(eco_rna, 1, '/', eco_rna_readsum) * 1000000
> eco_rna_cpm <- t(eco_rna_cpm0)
  1. apply関数を使って関数calc_means をeco_rna_cpmの各行に対して適用する(calc_means があらかじめ定義されていることが前提)。結果は、前問と同様に行と列が入れ替わるので、転置行列をとる。以下では、関数の適用と転置行列をとる操作を一つのコマンドにまとめている。
> eco_rna_mean <- t( apply(eco_rna_cpm, 1, calc_means) )