将var.test应用于每一行

时间:2015-11-16 22:39:44

标签: r apply

给定一个数据框,其中colnames有样本标识符(即G1和G2),我想在每一行上执行var.test()并将结果存储在一个新矩阵中。

>dat
           GSM475355_G1    GSM475367_G0    GSM475370_G0   GSM475373_G1   GSM475376_G0    GSM475381_G1     GSM475383_G1     GSM475385_G1
27411     -0.89388704      0.01987934      0.38278532     0.071681020     0.373300080    -0.455644130     -0.18787241      0.65458155
35558      1.74279880      0.54368210     -0.24144077     0.307267200    -0.059902190    -0.052984238      0.13823795      0.20645618
43304      1.94601350     -0.05378771      0.02680111    -0.065221310     0.130765910    -0.090313435     -0.05756617     -0.02083588
33721     -0.29451323      0.01806831     -0.08260250     0.140903470    -0.006454945    -0.128416540      0.05237675     -0.03429079
8310      -0.79846334      1.00792070     -0.35607958     0.378528120     0.081913950     0.112047670     -0.34938622      0.25825214
46204     -3.02495300      0.07315350      0.79066850     0.091570854     0.428258900     0.565763500      0.18908596      0.88739204
21809      0.07164812      0.06946850      0.00000000    -0.005378723    -0.081427574    -0.009929657      0.15938330     -0.05795145
23277     -0.19507313      0.22079802     -0.11173201    -0.139470100    -0.059999466     0.159433840     -0.23357010     -0.02099037

我尝试使用apply但它似乎无法正常工作,为了简单起见,我尝试了一些下面的变体我首先使用适当的标识符将colnames grep到新的数据框中并命名他们G1和G2。 e.g。

G1<-dat[,grep("G1", colnames(dat))]

申请尝试:

apply(G1, 1 ,var.test, y = G0)
apply(as.numeric(G1),as.numeric(G0),1, var.test))

其他一些变化并没有成功。我甚至试过一行,例如(G1[1,])来测试这个功能。

1 个答案:

答案 0 :(得分:0)

感谢@thelatemail指出我正确的方向!出于某种原因,您需要使用as.numeric来实现此功能。

dat$F.test <- apply(dat, 1, function(x)  var.test(as.numeric(x[grep("G1", colnames(dat))]), as.numeric(x[grep("G0", colnames(dat))]))[1])