给定一个数据框,其中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,]
)来测试这个功能。
答案 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])